Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vukCA-004GPX-1u for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 04:38:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vukC9-00H1V8-0v for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 04:38:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vukC8-00H1Uw-2O for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 04:38:48 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vukC4-00000000u9X-2bPa for pgsql-hackers@postgresql.org; Tue, 24 Feb 2026 04:38:47 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-354a18c48b5so4242404a91.1 for ; Mon, 23 Feb 2026 20:38:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771907925; cv=none; d=google.com; s=arc-20240605; b=BbRhDPjnWfRsh3kh6I39VX+gdhocsuLGWyfd5M46FwZv/Lw3IPTVqXcsjTRXDwTZPg 9niTo6O4sPhauEjVj1sqZV/zz4I8bfdKsFJABu6y2koXpV3irRyZyCMVMqQOPvywPmbc Crs74ylumZ6+/vWBtKXR2e9+S7P5q0TM4Y5l9PzJQv6ClbTd/VLTpKnSqilZf5AwDAA8 nJ7pOmuFNsclV9Kg+7GtNmeWaB+kV5hgnNvvFS7caGzckazPVjbaoNnz6EJCqNFBiQX/ lvC34Z7luE90ThnoV+EYM68un1c7al39uPTZrmKLmCz5qOKM+sB7qOybMaPkoNqTGHPx YbaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=VoRSJwuu4aT4y28VadDbtiRYqF0cc99LTB5T4sH23F0=; fh=AHBWeZrxjd4fj2XghKo5GzR+uF2km2B5e8QLeijgHa8=; b=SgVHhFvJJoTqXuowPfOzfF7M+K2k6dl2frpqybHZUQNivsrTJX58MxZqRc6rQQwLbU YOWBzhJkPVWt0iVazrCx2SydErGwtcwxwxiM39TppLmsgF7VSgrsU2NyC0WR5jU9CGbO fT3I8dPTNAK8DZiouskFE0bxjvT8kOT3hOZokK8SbOUX7hFubW9SkNKmFK4AkAuwNiIS GiGd1rLOTyjB+6CocA6/Y4pG19+VqLDLQwOcFWE39GCDtNn/UzfL/binGVLz1Odnf994 9ja/lBbdea12SkN4TMAjWkieMsUZos7JjhmuFhfc3OMXT4ddcuO4vAAEkoBGB5uIjqBm HH+w==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771907925; x=1772512725; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VoRSJwuu4aT4y28VadDbtiRYqF0cc99LTB5T4sH23F0=; b=Lr1sDqOXotjxdRE7nC5sOSOowE8jipcXDkB9PLtrfMolp+Bj5MXTy9lNXD/2I8S14f 0d0iuE+0yFFvqhZ+Kz+I0I4GVyr/tmEjxmPegClLSGxj66CTn9XvGfY0A4LxNnW3VOff y8RZh8n44957s7FNwFOjoLtbvDMCnPZYwKorTGCTRxhejBuh2o3v00lUTql3pYN1PZx7 F8aUSBNfe3Re72D9BrWpyry0dero+Psh+W61VqAOIKjIK/rOLFgwK6/GpJVqJxytxgqD KZESa3tAcbiETg/x4kyFh4X3Pj5kZT9aS1gZFQmuT6Yir5Sj/2r67JwJks+EUNflzayJ 0R9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771907925; x=1772512725; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VoRSJwuu4aT4y28VadDbtiRYqF0cc99LTB5T4sH23F0=; b=Ec/gI9LW/BJLcmOX+Lo3URKLdpgkbigQeoQQaBz+eMmo6Q/nn1glbzMr8ulxFEqFK6 8gx5MLrVWbxrHzF1arD8tRPdG84g3sJ3z1QogHB3I16iOQtcXLgy/FRK0kwXxia+zKeO Gu4qg6G4s9NloLC2kyhVbZjPB2pdENOVpORPyX2JPAz7T0+4nTTfbyif2fxH+DzUNaG9 LuZ6NXUNcbcWl+VYYjAjP3ImpICAI/cPEqxP3OxRp0QAEfI1frqX2OmLD+ZL0Sgb3JVQ OU/ks85qgGDFHKxfJeL8IKhgcb1d6r6sYqhez7NvQqc8ixDUM9M/x4G2+khZshRL/Sq0 YAKQ== X-Forwarded-Encrypted: i=1; AJvYcCWieU8kFnEdjsLM6fZ1n38qgP2yz+jsaHbS9xo1aNheotO8C0xtpTsJtZ9iml3YbF/dX8Xw/bY9aZFizJSK@postgresql.org X-Gm-Message-State: AOJu0YykE1+i2Op2+gSchrnZ0K80rOHJ7qld9fSlDVy9I6dIYmpARtAT kSKwFce3ppkJtebr1NKXmmrCaRWZi69m22qIJgWOfRr/NR8ZBwQcS4X1MoP5AYN04NDIJDKiSTl tBW0iJkHws/Jl4//3evFDpiZ/RHmwT+viFKW7Lu2JFA== X-Gm-Gg: ATEYQzytxjRxTNe5ktQJloxnPg/SdrDZKg51/gFPnn/InztNzyjuGewnQtRm/YQK4fm BcAVx14ttMO7nnFz2dfWw3c9q97765VGg3X2L9I5bzI+uoVSEoAJ6ABJBYlAJhLCkk0SVw5lIDN jU3acGdEUC1hunBIc4SqImGtakn3d9GTZQQ4eRwy0jnx2szYgF6AqQoaZZ4fTLpfNRkGuM9HjUV 65MMNghXpe+B0OILNaPKxq4FDj2QcRIGhD44B5+e3KHYFJuLht4+JRoiaHEYFulRRD7/+o9bSmg YxRxocAZU3DDtGzXV7aK6Wnmo5JngU4t/pnX/Pw= X-Received: by 2002:a17:90b:1fcd:b0:343:6d82:9278 with SMTP id 98e67ed59e1d1-358ae90c006mr8527320a91.30.1771907924901; Mon, 23 Feb 2026 20:38:44 -0800 (PST) MIME-Version: 1.0 References: <20260223.192646.1862474650359229532.ishii@postgresql.org> <20260224.115625.1966558814200895991.ishii@postgresql.org> In-Reply-To: <20260224.115625.1966558814200895991.ishii@postgresql.org> Reply-To: assam258@gmail.com From: Henson Choi Date: Tue, 24 Feb 2026 13:38:32 +0900 X-Gm-Features: AaiRm52ogiTbY0f-BOAsvnukjKRYgcMFFxcSI_iIu4JHVLZcbZGEvqGkUZ3Oc8I Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000705543064b8a766b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000705543064b8a766b Content-Type: multipart/alternative; boundary="000000000000705541064b8a7669" --000000000000705541064b8a7669 Content-Type: text/plain; charset="UTF-8" Hi Tatsuo, > BTW, in create_windowagg_plan (createplan.c), > around: > /* Build RPR pattern and filter defineClause */ > > collectPatternVariables, filterDefineClause and buildRPRPattern are > called in a block without any if or any other conditional > statements. This is an unusual codiing style in PostgreSQL. I suggest > to fix this. Attached is a proposed patch for this. Good catch, thank you! I've renumbered your patch as nocfbot-0007 and extended the same cleanup to rpr.c and parse_rpr.c as nocfbot-0008. nocfbot-0007: Refactor create_windowagg_plan to remove bare variable-scoping block (your patch, renumbered) nocfbot-0008: Remove bare variable-scoping blocks in RPR code Applies the same cleanup to rpr.c and parse_rpr.c, with minor pgindent formatting fixes. I'll keep this coding style point in mind for future code as well. Best regards, Henson --000000000000705541064b8a7669 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

> BTW, in create_windowagg_plan (crea= teplan.c),
> around:
> /* Build RPR pattern and filter defineCl= ause */
>
> collectPatternVariables, filterDefineClause and bui= ldRPRPattern are
> called in a block without any if or any other cond= itional
> statements. This is an unusual codiing style in PostgreSQL.= =C2=A0 I suggest
> to fix this.=C2=A0 Attached is a proposed patch fo= r this.

Good catch, thank you!=C2=A0 I've renumbered your patch = as nocfbot-0007
and extended the same cleanup to rpr.c and parse_rpr.c a= s
nocfbot-0008.

nocfbot-0007: Refactor create_windowagg_plan to r= emove bare
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 variable-sco= ping block (your patch, renumbered)

nocfbot-0008: Remove bare variab= le-scoping blocks in RPR code

=C2=A0 Applies the same cleanup to rpr= .c and parse_rpr.c, with minor
=C2=A0 pgindent formatting fixes.

= I'll keep this coding style point in mind for future code as well.
<= br>Best regards,
Henson
--000000000000705541064b8a7669-- --000000000000705543064b8a766b Content-Type: application/octet-stream; name="nocfbot-0007-Refactor-create_windowagg_plan-to-remove-bare-variab.patch" Content-Disposition: attachment; filename="nocfbot-0007-Refactor-create_windowagg_plan-to-remove-bare-variab.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm047lip0 RnJvbSAwN2E5Yzc4ZDIzNzM1OWFlNjRhMTBhZjQwN2Q5NjI5YzE5NWUwNmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IEZlYiAyMDI2IDEyOjM1OjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSCA3LzhdIFJl ZmFjdG9yIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbiB0byByZW1vdmUgYmFyZQogdmFyaWFibGUtc2Nv cGluZyBibG9jawoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMg fCA3OSArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0 aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRl cGxhbi5jCmluZGV4IGJiYzJjN2U3MWY0Li5lN2FhZmM4OTcwMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjQ4NCw2ICsyNDg0LDEwIEBAIGNyZWF0ZV93aW5k b3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQog CU9pZAkJICAgKm9yZE9wZXJhdG9yczsKIAlPaWQJCSAgICpvcmRDb2xsYXRpb25zOwogCUxpc3RD ZWxsICAgKmxjOworCUxpc3QJICAgKmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsKKwlMaXN0CSAg ICpmaWx0ZXJlZERlZmluZUNsYXVzZSA9IE5JTDsKKwlSUFJQYXR0ZXJuICpjb21waWxlZFBhdHRl cm4gPSBOVUxMOworCiAKIAkvKgogCSAqIENob2ljZSBvZiB0bGlzdCBoZXJlIGlzIG1vdGl2YXRl ZCBieSB0aGUgZmFjdCB0aGF0IFdpbmRvd0FnZyB3aWxsIGJlCkBAIC0yNTM1LDUwICsyNTM5LDQ1 IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0 aCAqYmVzdF9wYXRoKQogCX0KIAogCS8qIEJ1aWxkIFJQUiBwYXR0ZXJuIGFuZCBmaWx0ZXIgZGVm aW5lQ2xhdXNlICovCisJaWYgKHdjLT5ycFBhdHRlcm4pCiAJewotCQlMaXN0CSAgICpkZWZpbmVW YXJpYWJsZUxpc3QgPSBOSUw7Ci0JCUxpc3QJICAgKmZpbHRlcmVkRGVmaW5lQ2xhdXNlID0gTklM OwotCQlSUFJQYXR0ZXJuICpjb21waWxlZFBhdHRlcm4gPSBOVUxMOwotCi0JCWlmICh3Yy0+cnBQ YXR0ZXJuKQotCQl7Ci0JCQlMaXN0CSAgICpwYXR0ZXJuVmFyczsKKwkJTGlzdAkgICAqcGF0dGVy blZhcnM7CiAKLQkJCS8qCi0JCQkgKiBGaWx0ZXIgZGVmaW5lQ2xhdXNlIHRvIGluY2x1ZGUgb25s eSB2YXJpYWJsZXMgdXNlZCBpbiBQQVRURVJOLgotCQkJICogVGhpcyBlbGltaW5hdGVzIHVubmVj ZXNzYXJ5IERFRklORSBldmFsdWF0aW9ucyBhdCBydW50aW1lLgotCQkJICovCi0JCQlwYXR0ZXJu VmFycyA9IGNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKHdjLT5ycFBhdHRlcm4pOwotCQkJZmlsdGVy ZWREZWZpbmVDbGF1c2UgPSBmaWx0ZXJEZWZpbmVDbGF1c2Uod2MtPmRlZmluZUNsYXVzZSwKLQkJ CQkJCQkJCQkJCQkgIHBhdHRlcm5WYXJzLAotCQkJCQkJCQkJCQkJCSAgJmRlZmluZVZhcmlhYmxl TGlzdCk7Ci0KLQkJCWNvbXBpbGVkUGF0dGVybiA9IGJ1aWxkUlBSUGF0dGVybih3Yy0+cnBQYXR0 ZXJuLAotCQkJCQkJCQkJCQkgIGRlZmluZVZhcmlhYmxlTGlzdCwKLQkJCQkJCQkJCQkJICB3Yy0+ cnBTa2lwVG8sCi0JCQkJCQkJCQkJCSAgd2MtPmZyYW1lT3B0aW9ucyk7Ci0JCX0KLQotCQkvKiBB bmQgZmluYWxseSB3ZSBjYW4gbWFrZSB0aGUgV2luZG93QWdnIG5vZGUgKi8KLQkJcGxhbiA9IG1h a2Vfd2luZG93YWdnKHRsaXN0LAotCQkJCQkJCSAgd2MsCi0JCQkJCQkJICBwYXJ0TnVtQ29scywK LQkJCQkJCQkgIHBhcnRDb2xJZHgsCi0JCQkJCQkJICBwYXJ0T3BlcmF0b3JzLAotCQkJCQkJCSAg cGFydENvbGxhdGlvbnMsCi0JCQkJCQkJICBvcmROdW1Db2xzLAotCQkJCQkJCSAgb3JkQ29sSWR4 LAotCQkJCQkJCSAgb3JkT3BlcmF0b3JzLAotCQkJCQkJCSAgb3JkQ29sbGF0aW9ucywKLQkJCQkJ CQkgIGJlc3RfcGF0aC0+cnVuQ29uZGl0aW9uLAotCQkJCQkJCSAgd2MtPnJwU2tpcFRvLAotCQkJ CQkJCSAgY29tcGlsZWRQYXR0ZXJuLAotCQkJCQkJCSAgZmlsdGVyZWREZWZpbmVDbGF1c2UsCi0J CQkJCQkJICBiZXN0X3BhdGgtPnF1YWwsCi0JCQkJCQkJICBiZXN0X3BhdGgtPnRvcHdpbmRvdywK LQkJCQkJCQkgIHN1YnBsYW4pOworCQkvKgorCQkgKiBGaWx0ZXIgZGVmaW5lQ2xhdXNlIHRvIGlu Y2x1ZGUgb25seSB2YXJpYWJsZXMgdXNlZCBpbiBQQVRURVJOLiBUaGlzCisJCSAqIGVsaW1pbmF0 ZXMgdW5uZWNlc3NhcnkgREVGSU5FIGV2YWx1YXRpb25zIGF0IHJ1bnRpbWUuCisJCSAqLworCQlw YXR0ZXJuVmFycyA9IGNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKHdjLT5ycFBhdHRlcm4pOworCQlm aWx0ZXJlZERlZmluZUNsYXVzZSA9IGZpbHRlckRlZmluZUNsYXVzZSh3Yy0+ZGVmaW5lQ2xhdXNl LAorCQkJCQkJCQkJCQkJICBwYXR0ZXJuVmFycywKKwkJCQkJCQkJCQkJCSAgJmRlZmluZVZhcmlh YmxlTGlzdCk7CisKKwkJLyogQ29tcGlsZSBhbmQgb3B0aW1pemUgUlBSIHBhdHRlcm5zICovCisJ CWNvbXBpbGVkUGF0dGVybiA9IGJ1aWxkUlBSUGF0dGVybih3Yy0+cnBQYXR0ZXJuLAorCQkJCQkJ CQkJCSAgZGVmaW5lVmFyaWFibGVMaXN0LAorCQkJCQkJCQkJCSAgd2MtPnJwU2tpcFRvLAorCQkJ CQkJCQkJCSAgd2MtPmZyYW1lT3B0aW9ucyk7CiAJfQogCisJLyogQW5kIGZpbmFsbHkgd2UgY2Fu IG1ha2UgdGhlIFdpbmRvd0FnZyBub2RlICovCisJcGxhbiA9IG1ha2Vfd2luZG93YWdnKHRsaXN0 LAorCQkJCQkJICB3YywKKwkJCQkJCSAgcGFydE51bUNvbHMsCisJCQkJCQkgIHBhcnRDb2xJZHgs CisJCQkJCQkgIHBhcnRPcGVyYXRvcnMsCisJCQkJCQkgIHBhcnRDb2xsYXRpb25zLAorCQkJCQkJ ICBvcmROdW1Db2xzLAorCQkJCQkJICBvcmRDb2xJZHgsCisJCQkJCQkgIG9yZE9wZXJhdG9ycywK KwkJCQkJCSAgb3JkQ29sbGF0aW9ucywKKwkJCQkJCSAgYmVzdF9wYXRoLT5ydW5Db25kaXRpb24s CisJCQkJCQkgIHdjLT5ycFNraXBUbywKKwkJCQkJCSAgY29tcGlsZWRQYXR0ZXJuLAorCQkJCQkJ ICBmaWx0ZXJlZERlZmluZUNsYXVzZSwKKwkJCQkJCSAgYmVzdF9wYXRoLT5xdWFsLAorCQkJCQkJ ICBiZXN0X3BhdGgtPnRvcHdpbmRvdywKKwkJCQkJCSAgc3VicGxhbik7CisKIAljb3B5X2dlbmVy aWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgpOwogCiAJcmV0dXJu IHBsYW47Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000705543064b8a766b Content-Type: application/octet-stream; name="nocfbot-0008-Remove-bare-variable-scoping-blocks-in-RPR-code.patch" Content-Disposition: attachment; filename="nocfbot-0008-Remove-bare-variable-scoping-blocks-in-RPR-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm047n0z1 RnJvbSA5M2Y5OGQzMWZjMmE5Y2E1OGNkOTczYjY3MWI1YjI0MWM2ZDVkNDYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IEZlYiAyMDI2IDEyOjM4OjA1ICswOTAwClN1YmplY3Q6IFtQQVRDSCA4LzhdIFJl bW92ZSBiYXJlIHZhcmlhYmxlLXNjb3BpbmcgYmxvY2tzIGluIFJQUiBjb2RlCgotLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIHwgNjYgKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jICAgfCA3NCArKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA3 MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9y cHIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCmluZGV4IDk4N2Y1OTVkNDM0 Li40NDE0YjcxYjVlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnBy LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAgLTUwMyw2ICs1MDMs NyBAQCBtZXJnZUdyb3VwUHJlZml4U3VmZml4KExpc3QgKmNoaWxkcmVuKQogCQkJTGlzdAkgICAq Z3JvdXBDb250ZW50ID0gY2hpbGQtPmNoaWxkcmVuOwogCQkJaW50CQkJZ3JvdXBDaGlsZENvdW50 OwogCQkJaW50CQkJcHJlZml4TGVuID0gbGlzdF9sZW5ndGgocmVzdWx0KTsKKwkJCUxpc3QJICAg KnRyaW1tZWQ7CiAKIAkJCS8qCiAJCQkgKiBJZiBHUk9VUCBoYXMgc2luZ2xlIFNFUSBjaGlsZCwg Y29tcGFyZSB3aXRoIFNFUSdzIGNoaWxkcmVuLgpAQCAtNTQ2LDE3ICs1NDcsMTQgQEAgbWVyZ2VH cm91cFByZWZpeFN1ZmZpeChMaXN0ICpjaGlsZHJlbikKIAkJCQkJY2hpbGQtPm1pbiArPSAxOwog CiAJCQkJCS8qIFJlYnVpbGQgcmVzdWx0IHdpdGhvdXQgbWF0Y2hlZCBwcmVmaXggKi8KKwkJCQkJ dHJpbW1lZCA9IE5JTDsKKwkJCQkJZm9yIChqID0gMDsgaiA8IHByZWZpeExlbiAtIGdyb3VwQ2hp bGRDb3VudDsgaisrKQogCQkJCQl7Ci0JCQkJCQlMaXN0CSAgICp0cmltbWVkID0gTklMOwotCi0J CQkJCQlmb3IgKGogPSAwOyBqIDwgcHJlZml4TGVuIC0gZ3JvdXBDaGlsZENvdW50OyBqKyspCi0J CQkJCQl7Ci0JCQkJCQkJdHJpbW1lZCA9IGxhcHBlbmQodHJpbW1lZCwKLQkJCQkJCQkJCQkJICBs aXN0X250aChyZXN1bHQsIGopKTsKLQkJCQkJCX0KLQkJCQkJCXJlc3VsdCA9IHRyaW1tZWQ7Ci0J CQkJCQlwcmVmaXhMZW4gPSBsaXN0X2xlbmd0aChyZXN1bHQpOworCQkJCQkJdHJpbW1lZCA9IGxh cHBlbmQodHJpbW1lZCwKKwkJCQkJCQkJCQkgIGxpc3RfbnRoKHJlc3VsdCwgaikpOwogCQkJCQl9 CisJCQkJCXJlc3VsdCA9IHRyaW1tZWQ7CisJCQkJCXByZWZpeExlbiA9IGxpc3RfbGVuZ3RoKHJl c3VsdCk7CiAJCQkJfQogCQkJCWVsc2UKIAkJCQl7CkBAIC0xMjI2LDkgKzEyMjQsMTEgQEAgc3Rh dGljIHZvaWQKIGZpbGxSUFJQYXR0ZXJuQWx0KFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0 ZXJuICpwYXQsIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCkKIHsKIAlMaXN0Q2VsbCAgICpsYzsK KwlMaXN0Q2VsbCAgICpsYzI7CiAJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW07CiAJTGlzdAkgICAq YWx0QnJhbmNoU3RhcnRzID0gTklMOwogCUxpc3QJICAgKmFsdEVuZFBvc2l0aW9ucyA9IE5JTDsK KwlpbnQJCQlhZnRlckFsdElkeDsKIAogCS8qIEFkZCBhbHRlcm5hdGlvbiBzdGFydCBtYXJrZXIg Ki8KIAllbGVtID0gJnBhdC0+ZWxlbWVudHNbKmlkeF07CkBAIC0xMjYyLDM4ICsxMjYyLDM2IEBA IGZpbGxSUFJQYXR0ZXJuQWx0KFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQs IGludCAqaWR4LCBSUFJEZXB0aCBkZXB0CiAJfQogCiAJLyogU2V0IG5leHQgb24gbGFzdCBlbGVt ZW50IG9mIGVhY2ggYWx0ZXJuYXRpdmUgdG8gYWZ0ZXIgdGhlIGFsdGVybmF0aW9uICovCisJYWZ0 ZXJBbHRJZHggPSAqaWR4OworCWxjMiA9IGxpc3RfaGVhZChhbHRCcmFuY2hTdGFydHMpOworCisJ Zm9yZWFjaChsYywgYWx0RW5kUG9zaXRpb25zKQogCXsKLQkJaW50CQkJYWZ0ZXJBbHRJZHggPSAq aWR4OwotCQlMaXN0Q2VsbCAgICpsYzIgPSBsaXN0X2hlYWQoYWx0QnJhbmNoU3RhcnRzKTsKKwkJ aW50CQkJZW5kUG9zID0gbGZpcnN0X2ludChsYyk7CisJCWludAkJCWJyYW5jaFN0YXJ0ID0gbGZp cnN0X2ludChsYzIpOwogCi0JCWZvcmVhY2gobGMsIGFsdEVuZFBvc2l0aW9ucykKKwkJaWYgKHBh dC0+ZWxlbWVudHNbZW5kUG9zXS5uZXh0ICE9IFJQUl9FTEVNSURYX0lOVkFMSUQpCiAJCXsKLQkJ CWludAkJCWVuZFBvcyA9IGxmaXJzdF9pbnQobGMpOwotCQkJaW50CQkJYnJhbmNoU3RhcnQgPSBs Zmlyc3RfaW50KGxjMik7Ci0KLQkJCWlmIChwYXQtPmVsZW1lbnRzW2VuZFBvc10ubmV4dCAhPSBS UFJfRUxFTUlEWF9JTlZBTElEKQotCQkJewotCQkJCS8qCi0JCQkJICogQW4gaW5uZXIgQUxUIGFs cmVhZHkgc2V0IG5leHQgb24gdGhpcyBlbGVtZW50LiAgUmVkaXJlY3QKLQkJCQkgKiBhbGwgZWxl bWVudHMgaW4gdGhpcyBicmFuY2ggdGhhdCBzaGFyZSB0aGUgc2FtZSB0YXJnZXQgdG8KLQkJCQkg KiBwb2ludCB0byBhZnRlciB0aGlzIEFMVCBpbnN0ZWFkLgotCQkJCSAqLwotCQkJCWludAkJCW9s ZFRhcmdldCA9IHBhdC0+ZWxlbWVudHNbZW5kUG9zXS5uZXh0OwotCQkJCWludAkJCWo7CisJCQkv KgorCQkJICogQW4gaW5uZXIgQUxUIGFscmVhZHkgc2V0IG5leHQgb24gdGhpcyBlbGVtZW50LiAg UmVkaXJlY3QgYWxsCisJCQkgKiBlbGVtZW50cyBpbiB0aGlzIGJyYW5jaCB0aGF0IHNoYXJlIHRo ZSBzYW1lIHRhcmdldCB0byBwb2ludCB0bworCQkJICogYWZ0ZXIgdGhpcyBBTFQgaW5zdGVhZC4K KwkJCSAqLworCQkJaW50CQkJb2xkVGFyZ2V0ID0gcGF0LT5lbGVtZW50c1tlbmRQb3NdLm5leHQ7 CisJCQlpbnQJCQlqOwogCi0JCQkJZm9yIChqID0gYnJhbmNoU3RhcnQ7IGogPD0gZW5kUG9zOyBq KyspCi0JCQkJewotCQkJCQlpZiAocGF0LT5lbGVtZW50c1tqXS5uZXh0ID09IG9sZFRhcmdldCkK LQkJCQkJCXBhdC0+ZWxlbWVudHNbal0ubmV4dCA9IGFmdGVyQWx0SWR4OwotCQkJCX0KLQkJCX0K LQkJCWVsc2UKKwkJCWZvciAoaiA9IGJyYW5jaFN0YXJ0OyBqIDw9IGVuZFBvczsgaisrKQogCQkJ ewotCQkJCXBhdC0+ZWxlbWVudHNbZW5kUG9zXS5uZXh0ID0gYWZ0ZXJBbHRJZHg7CisJCQkJaWYg KHBhdC0+ZWxlbWVudHNbal0ubmV4dCA9PSBvbGRUYXJnZXQpCisJCQkJCXBhdC0+ZWxlbWVudHNb al0ubmV4dCA9IGFmdGVyQWx0SWR4OwogCQkJfQotCi0JCQlsYzIgPSBsbmV4dChhbHRCcmFuY2hT dGFydHMsIGxjMik7CiAJCX0KKwkJZWxzZQorCQl7CisJCQlwYXQtPmVsZW1lbnRzW2VuZFBvc10u bmV4dCA9IGFmdGVyQWx0SWR4OworCQl9CisKKwkJbGMyID0gbG5leHQoYWx0QnJhbmNoU3RhcnRz LCBsYzIpOwogCX0KIAogCWxpc3RfZnJlZShhbHRCcmFuY2hTdGFydHMpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3Jwci5jCmluZGV4IDllMWZhMjI4NzU5Li4wMjdhM2QyNTAwYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y cHIuYwpAQCAtMjY3LDYgKzI2Nyw3IEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRl ICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCXsKIAkJVGFy Z2V0RW50cnkgKnRlLAogCQkJCSAgICp0ZURlZmluZTsKKwkJaW50CQkJZGVmaW5lRXhwckxvY2F0 aW9uOwogCiAJCXJlc3RhcmdldCA9IChSZXNUYXJnZXQgKikgbGZpcnN0KGxjKTsKIAkJbmFtZSA9 IHJlc3RhcmdldC0+bmFtZTsKQEAgLTMwNiw0NCArMzA3LDQxIEBAIHRyYW5zZm9ybURlZmluZUNs YXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2lu ZGVmLAogCQkgKiBCWSksIG5vdCB0aGUgREVGSU5FIGNsYXVzZS4gV2UgbmVlZCB0byBwcmVzZXJ2 ZSB0aGUgREVGSU5FIGxvY2F0aW9uCiAJCSAqIGZvciBhY2N1cmF0ZSBlcnJvciByZXBvcnRpbmcu CiAJCSAqLwotCQl7Ci0JCQlpbnQJCQlkZWZpbmVFeHByTG9jYXRpb24gPSBleHByTG9jYXRpb24o cmVzdGFyZ2V0LT52YWwpOwotCi0JCQl0ZSA9IGZpbmRUYXJnZXRsaXN0RW50cnlTUUw5OShwc3Rh dGUsIHJlc3RhcmdldC0+dmFsLAotCQkJCQkJCQkJCSAgdGFyZ2V0bGlzdCwgRVhQUl9LSU5EX1JQ Ul9ERUZJTkUpOwotCi0JCQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tCi0JCQkgKiBDb3B5IHRoZSBU YXJnZXRFbnRyeSBmb3IgZGVmaW5lQ2xhdXNlIGFuZCBhbHdheXMgc2V0IHRoZSBwYXR0ZXJuCi0J CQkgKiB2YXJpYWJsZSBuYW1lLiBXZSB1c2UgY29weU9iamVjdCBzbyB0aGUgb3JpZ2luYWwgdGFy Z2V0bGlzdCBlbnRyeQotCQkJICogaXMgbm90IG1vZGlmaWVkLgotCQkJICoKLQkJCSAqIE5vdGU6 IFdlIG11c3QgYWx3YXlzIHNldCByZXNuYW1lIHRvIHRoZSBwYXR0ZXJuIHZhcmlhYmxlIG5hbWUu Ci0JCQkgKiBmaW5kVGFyZ2V0bGlzdEVudHJ5U1FMOTkgY3JlYXRlcyBuZXcgVEVzIHdpdGggcmVz bmFtZSA9IE5VTEwKLQkJCSAqIChyZXNqdW5rIGVudHJpZXMpLCBidXQgcmV0dXJucyBleGlzdGlu ZyBURXMgdW5jaGFuZ2VkIHdoZW4gdGhlCi0JCQkgKiBleHByZXNzaW9uIGFscmVhZHkgZXhpc3Rz IGluIHRhcmdldGxpc3QuCi0JCQkgKgotCQkJICogRXhhbXBsZTogIlNFTEVDVCBpZCwgZmxhZywg Li4uIFdJTkRPVyB3IEFTICguLi4gREVGSU5FIFQgQVMgZmxhZykiCi0JCQkgKgotCQkJICogMS4g U0VMRUNUIGxpc3QgcHJvY2Vzc2luZyBjcmVhdGVzOiBURXtyZXNuYW1lPSJmbGFnIiwgZXhwcj1m bGFnfQotCQkJICogMi4gREVGSU5FIFQgQVMgZmxhZzogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5 IGZpbmRzIGV4aXN0aW5nIFRFCi0JCQkgKiAzLiB0ZS0+cmVzbmFtZSBpcyAiZmxhZyIgKGZyb20g U0VMRUNUKSwgbm90IE5VTEwKLQkJCSAqIDQuIFdpdGhvdXQgdW5jb25kaXRpb25hbGx5IHNldHRp bmcgcmVzbmFtZSwgdGVEZWZpbmUtPnJlc25hbWUKLQkJCSAqICAgIHdvdWxkIHJlbWFpbiAiZmxh ZyIgaW5zdGVhZCBvZiBwYXR0ZXJuIHZhcmlhYmxlIG5hbWUgIlQiCi0JCQkgKiA1LiBidWlsZFJQ UlBhdHRlcm4gYnVpbGRzIGRlZmluZVZhcmlhYmxlTGlzdCBmcm9tIHJlc25hbWUsIHNvCi0JCQkg KiAgICBpdCB3b3VsZCBjb250YWluIFsiZmxhZyJdIGluc3RlYWQgb2YgWyJUIl0KLQkJCSAqIDYu IFBhdHRlcm4gdmFyaWFibGUgIlQiIG5vdCBmb3VuZCAtPiBBc3NlcnQgZmFpbHVyZSBjcmFzaAot CQkJICovCi0JCQl0ZURlZmluZSA9IGNvcHlPYmplY3QodGUpOwotCQkJdGVEZWZpbmUtPnJlc25h bWUgPSBwc3RyZHVwKG5hbWUpOwotCi0JCQkvKgotCQkJICogVXBkYXRlIHRoZSBleHByZXNzaW9u IGxvY2F0aW9uIHRvIHBvaW50IHRvIHRoZSBERUZJTkUgY2xhdXNlLgotCQkJICogVGhpcyBlbnN1 cmVzIGVycm9yIG1lc3NhZ2VzIHJlZmVyZW5jZSB0aGUgY29ycmVjdCBzb3VyY2UKLQkJCSAqIGxv Y2F0aW9uLgotCQkJICovCi0JCQlpZiAoZGVmaW5lRXhwckxvY2F0aW9uID49IDAgJiYgSXNBKHRl RGVmaW5lLT5leHByLCBWYXIpKQotCQkJCSgoVmFyICopIHRlRGVmaW5lLT5leHByKS0+bG9jYXRp b24gPSBkZWZpbmVFeHByTG9jYXRpb247Ci0JCX0KKwkJZGVmaW5lRXhwckxvY2F0aW9uID0gZXhw ckxvY2F0aW9uKHJlc3RhcmdldC0+dmFsKTsKKworCQl0ZSA9IGZpbmRUYXJnZXRsaXN0RW50cnlT UUw5OShwc3RhdGUsIHJlc3RhcmdldC0+dmFsLAorCQkJCQkJCQkJICB0YXJnZXRsaXN0LCBFWFBS X0tJTkRfUlBSX0RFRklORSk7CisKKwkJLyogLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkgKiBDb3B5 IHRoZSBUYXJnZXRFbnRyeSBmb3IgZGVmaW5lQ2xhdXNlIGFuZCBhbHdheXMgc2V0IHRoZSBwYXR0 ZXJuCisJCSAqIHZhcmlhYmxlIG5hbWUuIFdlIHVzZSBjb3B5T2JqZWN0IHNvIHRoZSBvcmlnaW5h bCB0YXJnZXRsaXN0IGVudHJ5CisJCSAqIGlzIG5vdCBtb2RpZmllZC4KKwkJICoKKwkJICogTm90 ZTogV2UgbXVzdCBhbHdheXMgc2V0IHJlc25hbWUgdG8gdGhlIHBhdHRlcm4gdmFyaWFibGUgbmFt ZS4KKwkJICogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IGNyZWF0ZXMgbmV3IFRFcyB3aXRoIHJl c25hbWUgPSBOVUxMCisJCSAqIChyZXNqdW5rIGVudHJpZXMpLCBidXQgcmV0dXJucyBleGlzdGlu ZyBURXMgdW5jaGFuZ2VkIHdoZW4gdGhlCisJCSAqIGV4cHJlc3Npb24gYWxyZWFkeSBleGlzdHMg aW4gdGFyZ2V0bGlzdC4KKwkJICoKKwkJICogRXhhbXBsZTogIlNFTEVDVCBpZCwgZmxhZywgLi4u IFdJTkRPVyB3IEFTICguLi4gREVGSU5FIFQgQVMgZmxhZykiCisJCSAqCisJCSAqIDEuIFNFTEVD VCBsaXN0IHByb2Nlc3NpbmcgY3JlYXRlczogVEV7cmVzbmFtZT0iZmxhZyIsIGV4cHI9ZmxhZ30K KwkJICogMi4gREVGSU5FIFQgQVMgZmxhZzogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IGZpbmRz IGV4aXN0aW5nIFRFCisJCSAqIDMuIHRlLT5yZXNuYW1lIGlzICJmbGFnIiAoZnJvbSBTRUxFQ1Qp LCBub3QgTlVMTAorCQkgKiA0LiBXaXRob3V0IHVuY29uZGl0aW9uYWxseSBzZXR0aW5nIHJlc25h bWUsIHRlRGVmaW5lLT5yZXNuYW1lCisJCSAqICAgIHdvdWxkIHJlbWFpbiAiZmxhZyIgaW5zdGVh ZCBvZiBwYXR0ZXJuIHZhcmlhYmxlIG5hbWUgIlQiCisJCSAqIDUuIGJ1aWxkUlBSUGF0dGVybiBi dWlsZHMgZGVmaW5lVmFyaWFibGVMaXN0IGZyb20gcmVzbmFtZSwgc28KKwkJICogICAgaXQgd291 bGQgY29udGFpbiBbImZsYWciXSBpbnN0ZWFkIG9mIFsiVCJdCisJCSAqIDYuIFBhdHRlcm4gdmFy aWFibGUgIlQiIG5vdCBmb3VuZCAtPiBBc3NlcnQgZmFpbHVyZSBjcmFzaAorCQkgKi8KKwkJdGVE ZWZpbmUgPSBjb3B5T2JqZWN0KHRlKTsKKwkJdGVEZWZpbmUtPnJlc25hbWUgPSBwc3RyZHVwKG5h bWUpOworCisJCS8qCisJCSAqIFVwZGF0ZSB0aGUgZXhwcmVzc2lvbiBsb2NhdGlvbiB0byBwb2lu dCB0byB0aGUgREVGSU5FIGNsYXVzZS4gVGhpcworCQkgKiBlbnN1cmVzIGVycm9yIG1lc3NhZ2Vz IHJlZmVyZW5jZSB0aGUgY29ycmVjdCBzb3VyY2UgbG9jYXRpb24uCisJCSAqLworCQlpZiAoZGVm aW5lRXhwckxvY2F0aW9uID49IDAgJiYgSXNBKHRlRGVmaW5lLT5leHByLCBWYXIpKQorCQkJKChW YXIgKikgdGVEZWZpbmUtPmV4cHIpLT5sb2NhdGlvbiA9IGRlZmluZUV4cHJMb2NhdGlvbjsKIAog CQkvKiBidWlsZCB0cmFuc2Zvcm1lZCBERUZJTkUgY2xhdXNlIChsaXN0IG9mIFRhcmdldEVudHJ5 KSAqLwogCQlkZWZpbmVDbGF1c2UgPSBsYXBwZW5kKGRlZmluZUNsYXVzZSwgdGVEZWZpbmUpOwot LSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --000000000000705543064b8a766b--