From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 167E63854162 for ; Wed, 29 Jun 2022 22:18:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 167E63854162 Received: by mail-pf1-x433.google.com with SMTP id x4so16391282pfq.2 for ; Wed, 29 Jun 2022 15:18:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=eKH1t0EdUWd8jyKLB0mHBkBiA0UboQ0vOEIgIHRbS8A=; b=6wj9xREUn8AK7NrB1kAZcL6y6dQiaZcot26QlvNURtoai1sRlZJIvKvZrcHdR1id3h nBZ0LGlpNAiZV8brtJ9dwG1XU7Qr8d752lWh6uDfulwhce217lc+irW7ysl2ME3IAnSI zbyHwU6Kw76DrpgxHiJq3nVDMkLWUV6m/udxeC5UATOFKvHnEQ3NPHT02kBflnrmG6Pu 8bNfU2/Q7ItDCSgqofHJtCNVd04vufV300QevUsqp7X4KfLblXCS6D3hJjfLmbaJXJHd OHfcC23OB4BWV1TMwVQOhS4lRcZhXRLQMdS9IR/9cJQcecqLOEDtTh3aTr+onam2P3s7 sR3A== X-Gm-Message-State: AJIora/HMMmCanncUEDMhhscYt14I/ZKaQ/IKOwhGU6sGFt3TWno9S2f 950D1tTCEi3VnVeF6p6O2ihhEmmkIU2/L05iefBfm9LhY9qPxg== X-Google-Smtp-Source: AGRyM1vbOxeP5CQbKGQ9eBPWxy/XcIfxVavO7n7j111niQLtr+GSB0jrXoy/A6YPKwCWq6tiboMg/dL0wjkxW/iz/as= X-Received: by 2002:a63:2cc6:0:b0:411:4fd6:49cb with SMTP id s189-20020a632cc6000000b004114fd649cbmr4673784pgs.365.1656541114746; Wed, 29 Jun 2022 15:18:34 -0700 (PDT) MIME-Version: 1.0 From: Ian Lance Taylor Date: Wed, 29 Jun 2022 15:18:23 -0700 Message-ID: Subject: Go patch committed: Check repeated const expressions in new scop To: gcc-patches , gofrontend-dev Content-Type: multipart/mixed; boundary="000000000000b3942005e29d880e" X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Jun 2022 22:18:38 -0000 --000000000000b3942005e29d880e Content-Type: text/plain; charset="UTF-8" This patch to the Go frontend checks repeated const expressions in new scope, in case they refer to a newly defined name. The test case is const8.go in https://go.dev/cl/414795. This fixes https://go.dev/issue/53585. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian --000000000000b3942005e29d880e Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l505s8x80 ZGFiYzczYzIwMDU3ZDAxNjAyN2ZkMWFmMjI1NzVlMjMyNWNhZDllZgpkaWZmIC0tZ2l0IGEvZ2Nj L2dvL2dvZnJvbnRlbmQvTUVSR0UgYi9nY2MvZ28vZ29mcm9udGVuZC9NRVJHRQppbmRleCAxM2Ni NmVhNDA0Ni4uNGZkZTI1YWY3NmUgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL01FUkdF CisrKyBiL2djYy9nby9nb2Zyb250ZW5kL01FUkdFCkBAIC0xLDQgKzEsNCBAQAotYzcyMzhmNThh MjYxMzFiNzYxMWVmZjZmNTU1Y2FiMDJhZjhhNjIzYworNjM3ODJmOGEzMThlOWVlYmZkYzk4M2Yx NzFhOTIwYzdhOTM3Yzc1OQogCiBUaGUgZmlyc3QgbGluZSBvZiB0aGlzIGZpbGUgaG9sZHMgdGhl IGdpdCByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGxhc3QKIG1lcmdlIGRvbmUgZnJvbSB0aGUgZ29m cm9udGVuZCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvZ2NjL2dvL2dvZnJvbnRlbmQvZXhwcmVz c2lvbnMuY2MgYi9nY2MvZ28vZ29mcm9udGVuZC9leHByZXNzaW9ucy5jYwppbmRleCBhYWRjYTk3 MTBlNi4uMDBkMzVhOTY1YTkgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL2V4cHJlc3Np b25zLmNjCisrKyBiL2djYy9nby9nb2Zyb250ZW5kL2V4cHJlc3Npb25zLmNjCkBAIC0zMzUyLDk3 ICszMzUyLDcgQEAgY2xhc3MgRmluZF9uYW1lZF9vYmplY3QgOiBwdWJsaWMgVHJhdmVyc2UKICAg Ym9vbCBmb3VuZF87CiB9OwogCi0vLyBBIHJlZmVyZW5jZSB0byBhIGNvbnN0IGluIGFuIGV4cHJl c3Npb24uCi0KLWNsYXNzIENvbnN0X2V4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbgotewot IHB1YmxpYzoKLSAgQ29uc3RfZXhwcmVzc2lvbihOYW1lZF9vYmplY3QqIGNvbnN0YW50LCBMb2Nh dGlvbiBsb2NhdGlvbikKLSAgICA6IEV4cHJlc3Npb24oRVhQUkVTU0lPTl9DT05TVF9SRUZFUkVO Q0UsIGxvY2F0aW9uKSwKLSAgICAgIGNvbnN0YW50Xyhjb25zdGFudCksIHR5cGVfKE5VTEwpLCBz ZWVuXyhmYWxzZSkKLSAgeyB9Ci0KLSAgTmFtZWRfb2JqZWN0KgotICBuYW1lZF9vYmplY3QoKQot ICB7IHJldHVybiB0aGlzLT5jb25zdGFudF87IH0KLQotICBjb25zdCBOYW1lZF9vYmplY3QqCi0g IG5hbWVkX29iamVjdCgpIGNvbnN0Ci0gIHsgcmV0dXJuIHRoaXMtPmNvbnN0YW50XzsgfQotCi0g IC8vIENoZWNrIHRoYXQgdGhlIGluaXRpYWxpemVyIGRvZXMgbm90IHJlZmVyIHRvIHRoZSBjb25z dGFudCBpdHNlbGYuCi0gIHZvaWQKLSAgY2hlY2tfZm9yX2luaXRfbG9vcCgpOwotCi0gcHJvdGVj dGVkOgotICBpbnQKLSAgZG9fdHJhdmVyc2UoVHJhdmVyc2UqKTsKLQotICBFeHByZXNzaW9uKgot ICBkb19sb3dlcihHb2dvKiwgTmFtZWRfb2JqZWN0KiwgU3RhdGVtZW50X2luc2VydGVyKiwgaW50 KTsKLQotICBib29sCi0gIGRvX2lzX2NvbnN0YW50KCkgY29uc3QKLSAgeyByZXR1cm4gdHJ1ZTsg fQotCi0gIGJvb2wKLSAgZG9faXNfemVyb192YWx1ZSgpIGNvbnN0Ci0gIHsgcmV0dXJuIHRoaXMt PmNvbnN0YW50Xy0+Y29uc3RfdmFsdWUoKS0+ZXhwcigpLT5pc196ZXJvX3ZhbHVlKCk7IH0KLQot ICBib29sCi0gIGRvX2lzX3N0YXRpY19pbml0aWFsaXplcigpIGNvbnN0Ci0gIHsgcmV0dXJuIHRy dWU7IH0KLQotICBib29sCi0gIGRvX251bWVyaWNfY29uc3RhbnRfdmFsdWUoTnVtZXJpY19jb25z dGFudCogbmMpIGNvbnN0OwotCi0gIGJvb2wKLSAgZG9fc3RyaW5nX2NvbnN0YW50X3ZhbHVlKHN0 ZDo6c3RyaW5nKiB2YWwpIGNvbnN0OwotCi0gIGJvb2wKLSAgZG9fYm9vbGVhbl9jb25zdGFudF92 YWx1ZShib29sKiB2YWwpIGNvbnN0OwotCi0gIFR5cGUqCi0gIGRvX3R5cGUoKTsKLQotICAvLyBU aGUgdHlwZSBvZiBhIGNvbnN0IGlzIHNldCBieSB0aGUgZGVjbGFyYXRpb24sIG5vdCB0aGUgdXNl LgotICB2b2lkCi0gIGRvX2RldGVybWluZV90eXBlKGNvbnN0IFR5cGVfY29udGV4dCopOwotCi0g IHZvaWQKLSAgZG9fY2hlY2tfdHlwZXMoR29nbyopOwotCi0gIEV4cHJlc3Npb24qCi0gIGRvX2Nv cHkoKQotICB7IHJldHVybiB0aGlzOyB9Ci0KLSAgQmV4cHJlc3Npb24qCi0gIGRvX2dldF9iYWNr ZW5kKFRyYW5zbGF0ZV9jb250ZXh0KiBjb250ZXh0KTsKLQotICBpbnQKLSAgZG9faW5saW5pbmdf Y29zdCgpIGNvbnN0Ci0gIHsgcmV0dXJuIDE7IH0KLQotICAvLyBXaGVuIGV4cG9ydGluZyBhIHJl ZmVyZW5jZSB0byBhIGNvbnN0IGFzIHBhcnQgb2YgYSBjb25zdAotICAvLyBleHByZXNzaW9uLCB3 ZSBleHBvcnQgdGhlIHZhbHVlLiAgV2UgaWdub3JlIHRoZSBmYWN0IHRoYXQgaXQgaGFzCi0gIC8v IGEgbmFtZS4KLSAgdm9pZAotICBkb19leHBvcnQoRXhwb3J0X2Z1bmN0aW9uX2JvZHkqIGVmYikg Y29uc3QKLSAgeyB0aGlzLT5jb25zdGFudF8tPmNvbnN0X3ZhbHVlKCktPmV4cHIoKS0+ZXhwb3J0 X2V4cHJlc3Npb24oZWZiKTsgfQotCi0gIHZvaWQKLSAgZG9fZHVtcF9leHByZXNzaW9uKEFzdF9k dW1wX2NvbnRleHQqKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIC8vIFRoZSBjb25zdGFudC4KLSAg TmFtZWRfb2JqZWN0KiBjb25zdGFudF87Ci0gIC8vIFRoZSB0eXBlIG9mIHRoaXMgcmVmZXJlbmNl LiAgVGhpcyBpcyB1c2VkIGlmIHRoZSBjb25zdGFudCBoYXMgYW4KLSAgLy8gYWJzdHJhY3QgdHlw ZS4KLSAgVHlwZSogdHlwZV87Ci0gIC8vIFVzZWQgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNp b24gd2hlbiBhIGNvbnN0YW50IGluY29ycmVjdGx5Ci0gIC8vIHJlZmVycyB0byBpdHNlbGYuCi0g IG11dGFibGUgYm9vbCBzZWVuXzsKLX07CisvLyBDbGFzcyBDb25zdF9leHByZXNzaW9uLgogCiAv LyBUcmF2ZXJzYWwuCiAKQEAgLTM0NTQsNiArMzM2NCwxNCBAQCBDb25zdF9leHByZXNzaW9uOjpk b190cmF2ZXJzZShUcmF2ZXJzZSogdHJhdmVyc2UpCiAgIHJldHVybiBUUkFWRVJTRV9DT05USU5V RTsKIH0KIAorLy8gV2hldGhlciB0aGlzIGlzIHRoZSB6ZXJvIHZhbHVlLgorCitib29sCitDb25z dF9leHByZXNzaW9uOjpkb19pc196ZXJvX3ZhbHVlKCkgY29uc3QKK3sKKyAgcmV0dXJuIHRoaXMt PmNvbnN0YW50Xy0+Y29uc3RfdmFsdWUoKS0+ZXhwcigpLT5pc196ZXJvX3ZhbHVlKCk7Cit9CisK IC8vIExvd2VyIGEgY29uc3RhbnQgZXhwcmVzc2lvbi4gIFRoaXMgaXMgd2hlcmUgd2UgY29udmVy dCB0aGUKIC8vIHByZWRlY2xhcmVkIGNvbnN0YW50IGlvdGEgaW50byBhbiBpbnRlZ2VyIHZhbHVl LgogCkBAIC0zNzA4LDYgKzM2MjYsMTYgQEAgQ29uc3RfZXhwcmVzc2lvbjo6ZG9fZ2V0X2JhY2tl bmQoVHJhbnNsYXRlX2NvbnRleHQqIGNvbnRleHQpCiAgIHJldHVybiBleHByLT5nZXRfYmFja2Vu ZChjb250ZXh0KTsKIH0KIAorLy8gV2hlbiBleHBvcnRpbmcgYSByZWZlcmVuY2UgdG8gYSBjb25z dCBhcyBwYXJ0IG9mIGEgY29uc3QKKy8vIGV4cHJlc3Npb24sIHdlIGV4cG9ydCB0aGUgdmFsdWUu ICBXZSBpZ25vcmUgdGhlIGZhY3QgdGhhdCBpdCBoYXMKKy8vIGEgbmFtZS4KKwordm9pZAorQ29u c3RfZXhwcmVzc2lvbjo6ZG9fZXhwb3J0KEV4cG9ydF9mdW5jdGlvbl9ib2R5KiBlZmIpIGNvbnN0 Cit7CisgIHRoaXMtPmNvbnN0YW50Xy0+Y29uc3RfdmFsdWUoKS0+ZXhwcigpLT5leHBvcnRfZXhw cmVzc2lvbihlZmIpOworfQorCiAvLyBEdW1wIGFzdCByZXByZXNlbnRhdGlvbiBmb3IgY29uc3Rh bnQgZXhwcmVzc2lvbi4KIAogdm9pZApkaWZmIC0tZ2l0IGEvZ2NjL2dvL2dvZnJvbnRlbmQvZXhw cmVzc2lvbnMuaCBiL2djYy9nby9nb2Zyb250ZW5kL2V4cHJlc3Npb25zLmgKaW5kZXggNzA3YzE5 MzM2ZDguLmExZTM3MzNhYTFkIDEwMDY0NAotLS0gYS9nY2MvZ28vZ29mcm9udGVuZC9leHByZXNz aW9ucy5oCisrKyBiL2djYy9nby9nb2Zyb250ZW5kL2V4cHJlc3Npb25zLmgKQEAgLTI4LDYgKzI4 LDcgQEAgY2xhc3MgTWFwX3R5cGU7CiBjbGFzcyBTdHJ1Y3RfdHlwZTsKIGNsYXNzIFN0cnVjdF9m aWVsZDsKIGNsYXNzIEV4cHJlc3Npb25fbGlzdDsKK2NsYXNzIENvbnN0X2V4cHJlc3Npb247CiBj bGFzcyBWYXJfZXhwcmVzc2lvbjsKIGNsYXNzIEVuY2xvc2VkX3Zhcl9leHByZXNzaW9uOwogY2xh c3MgVGVtcG9yYXJ5X3JlZmVyZW5jZV9leHByZXNzaW9uOwpAQCAtNjI2LDYgKzYyNywyMCBAQCBj bGFzcyBFeHByZXNzaW9uCiAgIGlzX3R5cGVfZXhwcmVzc2lvbigpIGNvbnN0CiAgIHsgcmV0dXJu IHRoaXMtPmNsYXNzaWZpY2F0aW9uXyA9PSBFWFBSRVNTSU9OX1RZUEU7IH0KIAorICAvLyBJZiB0 aGlzIGlzIGEgY29uc3QgcmVmZXJlbmNlLCByZXR1cm4gdGhlIENvbnN0X2V4cHJlc3Npb24KKyAg Ly8gc3RydWN0dXJlLiAgT3RoZXJ3aXNlLCByZXR1cm4gTlVMTC4gIFRoaXMgaXMgYSBjb250cm9s bGVkIGR5bmFtaWMKKyAgLy8gY2FzdC4KKyAgQ29uc3RfZXhwcmVzc2lvbioKKyAgY29uc3RfZXhw cmVzc2lvbigpCisgIHsgcmV0dXJuIHRoaXMtPmNvbnZlcnQ8Q29uc3RfZXhwcmVzc2lvbiwgRVhQ UkVTU0lPTl9DT05TVF9SRUZFUkVOQ0U+KCk7IH0KKworICBjb25zdCBDb25zdF9leHByZXNzaW9u KgorICBjb25zdF9leHByZXNzaW9uKCkgY29uc3QKKyAgeworICAgIHJldHVybiB0aGlzLT5jb252 ZXJ0PGNvbnN0IENvbnN0X2V4cHJlc3Npb24sCisJCQkgRVhQUkVTU0lPTl9DT05TVF9SRUZFUkVO Q0U+KCk7CisgIH0KKwogICAvLyBJZiB0aGlzIGlzIGEgdmFyaWFibGUgcmVmZXJlbmNlLCByZXR1 cm4gdGhlIFZhcl9leHByZXNzaW9uCiAgIC8vIHN0cnVjdHVyZS4gIE90aGVyd2lzZSwgcmV0dXJu IE5VTEwuICBUaGlzIGlzIGEgY29udHJvbGxlZCBkeW5hbWljCiAgIC8vIGNhc3QuCkBAIC0xNDUz LDYgKzE0NjgsOTYgQEAgY2xhc3MgUGFyc2VyX2V4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lv bgogICB7IGdvX3VucmVhY2hhYmxlKCk7IH0KIH07CiAKKy8vIEEgcmVmZXJlbmNlIHRvIGEgY29u c3QgaW4gYW4gZXhwcmVzc2lvbi4KKworY2xhc3MgQ29uc3RfZXhwcmVzc2lvbiA6IHB1YmxpYyBF eHByZXNzaW9uCit7CisgcHVibGljOgorICBDb25zdF9leHByZXNzaW9uKE5hbWVkX29iamVjdCog Y29uc3RhbnQsIExvY2F0aW9uIGxvY2F0aW9uKQorICAgIDogRXhwcmVzc2lvbihFWFBSRVNTSU9O X0NPTlNUX1JFRkVSRU5DRSwgbG9jYXRpb24pLAorICAgICAgY29uc3RhbnRfKGNvbnN0YW50KSwg dHlwZV8oTlVMTCksIHNlZW5fKGZhbHNlKQorICB7IH0KKworICBOYW1lZF9vYmplY3QqCisgIG5h bWVkX29iamVjdCgpCisgIHsgcmV0dXJuIHRoaXMtPmNvbnN0YW50XzsgfQorCisgIGNvbnN0IE5h bWVkX29iamVjdCoKKyAgbmFtZWRfb2JqZWN0KCkgY29uc3QKKyAgeyByZXR1cm4gdGhpcy0+Y29u c3RhbnRfOyB9CisKKyAgLy8gQ2hlY2sgdGhhdCB0aGUgaW5pdGlhbGl6ZXIgZG9lcyBub3QgcmVm ZXIgdG8gdGhlIGNvbnN0YW50IGl0c2VsZi4KKyAgdm9pZAorICBjaGVja19mb3JfaW5pdF9sb29w KCk7CisKKyBwcm90ZWN0ZWQ6CisgIGludAorICBkb190cmF2ZXJzZShUcmF2ZXJzZSopOworCisg IEV4cHJlc3Npb24qCisgIGRvX2xvd2VyKEdvZ28qLCBOYW1lZF9vYmplY3QqLCBTdGF0ZW1lbnRf aW5zZXJ0ZXIqLCBpbnQpOworCisgIGJvb2wKKyAgZG9faXNfY29uc3RhbnQoKSBjb25zdAorICB7 IHJldHVybiB0cnVlOyB9CisKKyAgYm9vbAorICBkb19pc196ZXJvX3ZhbHVlKCkgY29uc3Q7CisK KyAgYm9vbAorICBkb19pc19zdGF0aWNfaW5pdGlhbGl6ZXIoKSBjb25zdAorICB7IHJldHVybiB0 cnVlOyB9CisKKyAgYm9vbAorICBkb19udW1lcmljX2NvbnN0YW50X3ZhbHVlKE51bWVyaWNfY29u c3RhbnQqIG5jKSBjb25zdDsKKworICBib29sCisgIGRvX3N0cmluZ19jb25zdGFudF92YWx1ZShz dGQ6OnN0cmluZyogdmFsKSBjb25zdDsKKworICBib29sCisgIGRvX2Jvb2xlYW5fY29uc3RhbnRf dmFsdWUoYm9vbCogdmFsKSBjb25zdDsKKworICBUeXBlKgorICBkb190eXBlKCk7CisKKyAgLy8g VGhlIHR5cGUgb2YgYSBjb25zdCBpcyBzZXQgYnkgdGhlIGRlY2xhcmF0aW9uLCBub3QgdGhlIHVz ZS4KKyAgdm9pZAorICBkb19kZXRlcm1pbmVfdHlwZShjb25zdCBUeXBlX2NvbnRleHQqKTsKKwor ICB2b2lkCisgIGRvX2NoZWNrX3R5cGVzKEdvZ28qKTsKKworICBFeHByZXNzaW9uKgorICBkb19j b3B5KCkKKyAgeyByZXR1cm4gdGhpczsgfQorCisgIEJleHByZXNzaW9uKgorICBkb19nZXRfYmFj a2VuZChUcmFuc2xhdGVfY29udGV4dCogY29udGV4dCk7CisKKyAgaW50CisgIGRvX2lubGluaW5n X2Nvc3QoKSBjb25zdAorICB7IHJldHVybiAxOyB9CisKKyAgLy8gV2hlbiBleHBvcnRpbmcgYSBy ZWZlcmVuY2UgdG8gYSBjb25zdCBhcyBwYXJ0IG9mIGEgY29uc3QKKyAgLy8gZXhwcmVzc2lvbiwg d2UgZXhwb3J0IHRoZSB2YWx1ZS4gIFdlIGlnbm9yZSB0aGUgZmFjdCB0aGF0IGl0IGhhcworICAv LyBhIG5hbWUuCisgIHZvaWQKKyAgZG9fZXhwb3J0KEV4cG9ydF9mdW5jdGlvbl9ib2R5KiBlZmIp IGNvbnN0OworCisgIHZvaWQKKyAgZG9fZHVtcF9leHByZXNzaW9uKEFzdF9kdW1wX2NvbnRleHQq KSBjb25zdDsKKworIHByaXZhdGU6CisgIC8vIFRoZSBjb25zdGFudC4KKyAgTmFtZWRfb2JqZWN0 KiBjb25zdGFudF87CisgIC8vIFRoZSB0eXBlIG9mIHRoaXMgcmVmZXJlbmNlLiAgVGhpcyBpcyB1 c2VkIGlmIHRoZSBjb25zdGFudCBoYXMgYW4KKyAgLy8gYWJzdHJhY3QgdHlwZS4KKyAgVHlwZSog dHlwZV87CisgIC8vIFVzZWQgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiBhIGNv bnN0YW50IGluY29ycmVjdGx5CisgIC8vIHJlZmVycyB0byBpdHNlbGYuCisgIG11dGFibGUgYm9v bCBzZWVuXzsKK307CisKIC8vIEFuIGV4cHJlc3Npb24gd2hpY2ggaXMgc2ltcGx5IGEgdmFyaWFi bGUuCiAKIGNsYXNzIFZhcl9leHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24KZGlmZiAtLWdp dCBhL2djYy9nby9nb2Zyb250ZW5kL3BhcnNlLmNjIGIvZ2NjL2dvL2dvZnJvbnRlbmQvcGFyc2Uu Y2MKaW5kZXggY2MxOTdlNWViMzUuLmUzODgyNjFmNDk0IDEwMDY0NAotLS0gYS9nY2MvZ28vZ29m cm9udGVuZC9wYXJzZS5jYworKysgYi9nY2MvZ28vZ29mcm9udGVuZC9wYXJzZS5jYwpAQCAtMTQ2 OCw2ICsxNDY4LDcgQEAgUGFyc2U6OmNvbnN0X3NwZWMoaW50IGlvdGEsIFR5cGUqKiBsYXN0X3R5 cGUsIEV4cHJlc3Npb25fbGlzdCoqIGxhc3RfZXhwcl9saXN0KQogCXsKIAkgIEV4cHJlc3Npb24q IGNvcHkgPSAoKnApLT5jb3B5KCk7CiAJICBjb3B5LT5zZXRfbG9jYXRpb24obG9jKTsKKwkgIHRo aXMtPnVwZGF0ZV9yZWZlcmVuY2VzKCZjb3B5KTsKIAkgIGV4cHJfbGlzdC0+cHVzaF9iYWNrKGNv cHkpOwogCX0KICAgICB9CkBAIC0xNTEzLDYgKzE1MTQsOTQgQEAgUGFyc2U6OmNvbnN0X3NwZWMo aW50IGlvdGEsIFR5cGUqKiBsYXN0X3R5cGUsIEV4cHJlc3Npb25fbGlzdCoqIGxhc3RfZXhwcl9s aXN0KQogICByZXR1cm47CiB9CiAKKy8vIFVwZGF0ZSBhbnkgcmVmZXJlbmNlcyB0byBuYW1lcyB0 byByZWZlciB0byB0aGUgY3VycmVudCBuYW1lcywKKy8vIGZvciB3ZWlyZCBjYXNlcyBsaWtlCisv LworLy8gY29uc3QgWCA9IDEKKy8vIGZ1bmMgRigpIHsKKy8vIAljb25zdCAoCisvLyAJCVggPSBY ICsgWAorLy8JCVkKKy8vIAkpCisvLyB9CisvLworLy8gd2hlcmUgdGhlIFggKyBYIGZvciB0aGUg Zmlyc3QgWCBpcyB0aGUgb3V0ZXIgWCwgYnV0IHRoZSBYICsgWAorLy8gY29waWVkIGZvciBZIGlz IHRoZSBpbm5lciBYLgorCitjbGFzcyBVcGRhdGVfcmVmZXJlbmNlcyA6IHB1YmxpYyBUcmF2ZXJz ZQoreworIHB1YmxpYzoKKyAgVXBkYXRlX3JlZmVyZW5jZXMoR29nbyogZ29nbykKKyAgICA6IFRy YXZlcnNlKHRyYXZlcnNlX2V4cHJlc3Npb25zKSwKKyAgICAgIGdvZ29fKGdvZ28pCisgIHsgfQor CisgIGludAorICBleHByZXNzaW9uKEV4cHJlc3Npb24qKik7CisKKyBwcml2YXRlOgorICBHb2dv KiBnb2dvXzsKK307CisKK2ludAorVXBkYXRlX3JlZmVyZW5jZXM6OmV4cHJlc3Npb24oRXhwcmVz c2lvbioqIHBleHByKQoreworICBOYW1lZF9vYmplY3QqIG9sZF9ubzsKKyAgc3dpdGNoICgoKnBl eHByKS0+Y2xhc3NpZmljYXRpb24oKSkKKyAgICB7CisgICAgY2FzZSBFeHByZXNzaW9uOjpFWFBS RVNTSU9OX0NPTlNUX1JFRkVSRU5DRToKKyAgICAgIG9sZF9ubyA9ICgqcGV4cHIpLT5jb25zdF9l eHByZXNzaW9uKCktPm5hbWVkX29iamVjdCgpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHBy ZXNzaW9uOjpFWFBSRVNTSU9OX1ZBUl9SRUZFUkVOQ0U6CisgICAgICBvbGRfbm8gPSAoKnBleHBy KS0+dmFyX2V4cHJlc3Npb24oKS0+bmFtZWRfb2JqZWN0KCk7CisgICAgICBicmVhazsKKyAgICBj YXNlIEV4cHJlc3Npb246OkVYUFJFU1NJT05fRU5DTE9TRURfVkFSX1JFRkVSRU5DRToKKyAgICAg IG9sZF9ubyA9ICgqcGV4cHIpLT5lbmNsb3NlZF92YXJfZXhwcmVzc2lvbigpLT52YXJpYWJsZSgp OworICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uOjpFWFBSRVNTSU9OX0ZVTkNfUkVG RVJFTkNFOgorICAgICAgb2xkX25vID0gKCpwZXhwciktPmZ1bmNfZXhwcmVzc2lvbigpLT5uYW1l ZF9vYmplY3QoKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbjo6RVhQUkVTU0lP Tl9VTktOT1dOX1JFRkVSRU5DRToKKyAgICAgIG9sZF9ubyA9ICgqcGV4cHIpLT51bmtub3duX2V4 cHJlc3Npb24oKS0+bmFtZWRfb2JqZWN0KCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor ICAgICAgcmV0dXJuIFRSQVZFUlNFX0NPTlRJTlVFOworICAgIH0KKworICBpZiAob2xkX25vLT5w YWNrYWdlKCkgIT0gTlVMTCkKKyAgICB7CisgICAgICAvLyBUaGlzIGlzIGEgcXVhbGlmaWVkIHJl ZmVyZW5jZSwgc28gaXQgY2FuJ3QgaGF2ZSBjaGFuZ2VkIGluCisgICAgICAvLyBzY29wZS4gIEZJ WE1FOiBUaGlzIHByb2JhYmx5IGRvZXNuJ3QgaGFuZGxlIGRvdCBpbXBvcnRzCisgICAgICAvLyBj b3JyZWN0bHkuCisgICAgICByZXR1cm4gVFJBVkVSU0VfQ09OVElOVUU7CisgICAgfQorCisgIE5h bWVkX29iamVjdCogaW5fZnVuY3Rpb247CisgIE5hbWVkX29iamVjdCogbmV3X25vID0gdGhpcy0+ Z29nb18tPmxvb2t1cChvbGRfbm8tPm5hbWUoKSwgJmluX2Z1bmN0aW9uKTsKKyAgaWYgKG5ld19u byA9PSBvbGRfbm8pCisgICAgcmV0dXJuIFRSQVZFUlNFX0NPTlRJTlVFOworCisgIC8vIFRoZSBu ZXcgbmFtZSBtdXN0IGJlIGEgY29uc3RhbnQsIHNpbmNlIHRoYXQgaXMgYWxsIHdlIGhhdmUKKyAg Ly8gaW50cm9kdWNlZCBpbnRvIHNjb3BlLgorICBpZiAoIW5ld19uby0+aXNfY29uc3QoKSkKKyAg ICB7CisgICAgICBnb19hc3NlcnQoc2F3X2Vycm9ycygpKTsKKyAgICAgIHJldHVybiBUUkFWRVJT RV9DT05USU5VRTsKKyAgICB9CisKKyAgKnBleHByID0gRXhwcmVzc2lvbjo6bWFrZV9jb25zdF9y ZWZlcmVuY2UobmV3X25vLCAoKnBleHByKS0+bG9jYXRpb24oKSk7CisKKyAgcmV0dXJuIFRSQVZF UlNFX0NPTlRJTlVFOworfQorCit2b2lkCitQYXJzZTo6dXBkYXRlX3JlZmVyZW5jZXMoRXhwcmVz c2lvbioqIHBleHByKQoreworICBVcGRhdGVfcmVmZXJlbmNlcyB1cih0aGlzLT5nb2dvXyk7Cisg IHVyLmV4cHJlc3Npb24ocGV4cHIpOworICAoKnBleHByKS0+dHJhdmVyc2Vfc3ViZXhwcmVzc2lv bnMoJnVyKTsKK30KKwogLy8gVHlwZURlY2wgPSAidHlwZSIgRGVjbDxUeXBlU3BlYz4gLgogCiB2 b2lkCmRpZmYgLS1naXQgYS9nY2MvZ28vZ29mcm9udGVuZC9wYXJzZS5oIGIvZ2NjL2dvL2dvZnJv bnRlbmQvcGFyc2UuaAppbmRleCA2ZTMwMGVmODAwYy4uY2RhMGJlZWZlYmMgMTAwNjQ0Ci0tLSBh L2djYy9nby9nb2Zyb250ZW5kL3BhcnNlLmgKKysrIGIvZ2NjL2dvL2dvZnJvbnRlbmQvcGFyc2Uu aApAQCAtMTg1LDYgKzE4NSw3IEBAIGNsYXNzIFBhcnNlCiAgIHZvaWQgbGlzdCh2b2lkIChQYXJz ZTo6KikoKSwgYm9vbCk7CiAgIHZvaWQgY29uc3RfZGVjbCgpOwogICB2b2lkIGNvbnN0X3NwZWMo aW50LCBUeXBlKiosIEV4cHJlc3Npb25fbGlzdCoqKTsKKyAgdm9pZCB1cGRhdGVfcmVmZXJlbmNl cyhFeHByZXNzaW9uKiopOwogICB2b2lkIHR5cGVfZGVjbCgpOwogICB2b2lkIHR5cGVfc3BlYygp OwogICB2b2lkIHZhcl9kZWNsKCk7Cg== --000000000000b3942005e29d880e--