From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id 4D31F3858D37; Thu, 26 Oct 2023 05:18:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4D31F3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4D31F3858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698297523; cv=none; b=C5mUaiVX6PiFrGIXMRrXqgXcrP4LAS4P8fV9WcpQF2EwXoNl2DtFXF8tvFlN3FUHuZfx2ryFvF2Mm4N8wbHhliDbJXDZIbQmi951cUxjiJ0eUiPRPm+EpzpTdFwrD30eyN6/yoVzx/O+yHdhblTC+CaLgMJl7TUMRZfu8FFzpJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698297523; c=relaxed/simple; bh=wJRQrF8Q56kL+oS6tt+hlGKWciFDeamZlbINeWC7i6Y=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=WQhMz15eDsBy7T+B63BOCER1rKomFDoo/zRWOUUzgmGXM5aAVm7Ba9r+RLT43eNVKz0ca+YV1OavEY8UVDeCDJ+8mXupP5t76XtgMx5wPAoeFagke+BCVG3brPRWvQtynF6B9QVVeJlq2ya58xR3cn0JK2Q7oHgL5I+zjUGilPA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4083cd3917eso3787415e9.3; Wed, 25 Oct 2023 22:18:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698297520; x=1698902320; darn=gcc.gnu.org; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=IehNhqnCbbZErt24eNF7AxMBjUIndMQARqW2zMaoMV4=; b=ZtG4kUEX82FL3mQfLPe5QkEWzzGTOPGsfXQWkv8E2sAAt/eqaEQpkXFQC/K8tgOHKN D0256rObd8frquSO9CS4LA/KEZbtmhkZnIphj3pjKcik5Umo9epjl6+aUlop0WP3Km/I vFYYubWYHM3le7PP2L9mixb16dTw4NdltSClpJvTqzzoDEjqkqZO8ivhPOTLbrBgCj8Z LV8ssl0VhkHqicfYOdAzQjFlAMRZF/3Mz+N0hqWHUh9H2QIvyLElOhLYqkWDnuw21lxE vKrd0fBTxP5OYjmoF5hmcZy1dH2CyJgC/jGY0ibtEzExyZHQZ4tZCM7iizlLZw4OdlVS J3dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698297520; x=1698902320; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IehNhqnCbbZErt24eNF7AxMBjUIndMQARqW2zMaoMV4=; b=pwViYSGk0Ja6SctKISFcNTIRetSRRGIVQa/kKqyAXa3qBFfhBFz5LT/Qa+cIPqeHop aZZhLjTpSk6zriY2KxiInFGOWV076o8vc2TOM5HzMdwSwDtQhUZYbmdw4iTOm91YllsU pQ38nUuQVlPS1vlEiUXUZzCEGaW/w20fRlrzJoMLhU5iZuUIw/vSm2IcAs1WMqogUuIu gwtSRnU3qNH1IYa6zTmqxF+0I4ae4ImBLy6lZHxG/+yqiYyOSO3v8+WFXAFTkaTyRhAb 7DRZOjw00f23kU3z1ghElLT39Jq52owb11Q/sjhKscVocEM7QHBB4qNqGeScpMV38PA9 qRcA== X-Gm-Message-State: AOJu0YxhJ0+6CWB2HBEpvegRl47VyzX/R1E1TbUAoSsT/JIxwqm20lId NS0WKKmSDlY4uLkT8B30bCWtbPykHtM= X-Google-Smtp-Source: AGHT+IHNSLZ2qokUiB8RKXHyvsUxBcKCCk0QHaXNizRUu2vmAkNTKLsdIizpSK7ht5xmTp8bBEtdcQ== X-Received: by 2002:a05:600c:a01:b0:406:53c0:3c71 with SMTP id z1-20020a05600c0a0100b0040653c03c71mr13936388wmp.37.1698297519320; Wed, 25 Oct 2023 22:18:39 -0700 (PDT) Received: from [10.25.0.75] ([89.207.171.100]) by smtp.gmail.com with ESMTPSA id h12-20020adff18c000000b0032d402f816csm13229932wro.98.2023.10.25.22.18.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 25 Oct 2023 22:18:38 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------b5ylP0yvS0VqielXJclBB2HV" Message-ID: <7f61df18-dd99-4ff5-9fcd-8ca7820403d4@gmail.com> Date: Thu, 26 Oct 2023 07:18:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: libstdc++ Cc: gcc-patches From: =?UTF-8?Q?Fran=C3=A7ois_Dumont?= Subject: [PATCH][_Hashtable] Use RAII to restore Rehash state X-Spam-Status: No, score=-8.9 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------b5ylP0yvS0VqielXJclBB2HV Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit     libstdc++: [_Hashtable] Use RAII type to manage rehash functor state     Replace usage of __try/__catch with a RAII type to restore rehash functor     state when needed.     libstdc++-v3/ChangeLog:             * include/bits/hashtable_policy.h (_RehashStateGuard): New.             (_Insert_base<>::_M_insert_range(_IIt, _IIt, const _NodeGet&, false_type)):             Adapt.             * include/bits/hashtable.h (__rehash_guard_t): New.             (__rehash_state): Remove.             (_M_rehash): Remove.             (_M_rehash_aux): Rename into _M_rehash.             (_M_assign_elements, _M_insert_unique_node, _M_insert_multi_node): Adapt.             (rehash): Adapt. Tested under Linux x64. Ok to commit ? François --------------b5ylP0yvS0VqielXJclBB2HV Content-Type: text/x-patch; charset=UTF-8; name="raii_rehash_state.patch" Content-Disposition: attachment; filename="raii_rehash_state.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvaGFzaHRhYmxlLmggYi9s aWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0YWJsZS5oCmluZGV4IDA4NTc0NDhmN2Vk Li42NDA3MWFjMWZiMiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9o YXNodGFibGUuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0YWJsZS5o CkBAIC0yMzQsNiArMjM0LDggQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K IAkJCQkJICAgICAgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz47CiAgICAgICB1c2luZyBfX2Vu YWJsZV9kZWZhdWx0X2N0b3IKIAk9IF9IYXNodGFibGVfZW5hYmxlX2RlZmF1bHRfY3Rvcjxf RXF1YWwsIF9IYXNoLCBfQWxsb2M+OworICAgICAgdXNpbmcgX19yZWhhc2hfZ3VhcmRfdAor CT0gX19kZXRhaWw6Ol9SZWhhc2hTdGF0ZUd1YXJkPF9SZWhhc2hQb2xpY3k+OwogCiAgICAg cHVibGljOgogICAgICAgdHlwZWRlZiBfS2V5CQkJCQkJa2V5X3R5cGU7CkBAIC0yNjQsNyAr MjY2LDYgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogICAgIHByaXZh dGU6CiAgICAgICB1c2luZyBfX3JlaGFzaF90eXBlID0gX1JlaGFzaFBvbGljeTsKLSAgICAg IHVzaW5nIF9fcmVoYXNoX3N0YXRlID0gdHlwZW5hbWUgX19yZWhhc2hfdHlwZTo6X1N0YXRl OwogCiAgICAgICB1c2luZyBfX3VuaXF1ZV9rZXlzID0gdHlwZW5hbWUgX190cmFpdHNfdHlw ZTo6X191bmlxdWVfa2V5czsKIApAQCAtMTIwMCwxNCArMTIwMSwxMCBAQCBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiAgICAgcHJpdmF0ZToKICAgICAgIC8vIEhlbHBl ciByZWhhc2ggbWV0aG9kIHVzZWQgd2hlbiBrZXlzIGFyZSB1bmlxdWUuCi0gICAgICB2b2lk IF9NX3JlaGFzaF9hdXgoc2l6ZV90eXBlIF9fYmt0X2NvdW50LCB0cnVlX3R5cGUgX191a3Mp OworICAgICAgdm9pZCBfTV9yZWhhc2goc2l6ZV90eXBlIF9fYmt0X2NvdW50LCB0cnVlX3R5 cGUgX191a3MpOwogCiAgICAgICAvLyBIZWxwZXIgcmVoYXNoIG1ldGhvZCB1c2VkIHdoZW4g a2V5cyBjYW4gYmUgbm9uLXVuaXF1ZS4KLSAgICAgIHZvaWQgX01fcmVoYXNoX2F1eChzaXpl X3R5cGUgX19ia3RfY291bnQsIGZhbHNlX3R5cGUgX191a3MpOwotCi0gICAgICAvLyBVbmNv bmRpdGlvbmFsbHkgY2hhbmdlIHNpemUgb2YgYnVja2V0IGFycmF5IHRvIG4sIHJlc3RvcmUK LSAgICAgIC8vIGhhc2ggcG9saWN5IHN0YXRlIHRvIF9fc3RhdGUgb24gZXhjZXB0aW9uLgot ICAgICAgdm9pZCBfTV9yZWhhc2goc2l6ZV90eXBlIF9fYmt0X2NvdW50LCBjb25zdCBfX3Jl aGFzaF9zdGF0ZSYgX19zdGF0ZSk7CisgICAgICB2b2lkIF9NX3JlaGFzaChzaXplX3R5cGUg X19ia3RfY291bnQsIGZhbHNlX3R5cGUgX191a3MpOwogICAgIH07CiAKICAgLy8gRGVmaW5p dGlvbnMgb2YgY2xhc3MgdGVtcGxhdGUgX0hhc2h0YWJsZSdzIG91dC1vZi1saW5lIG1lbWJl ciBmdW5jdGlvbnMuCkBAIC0xMzM3LDcgKzEzMzQsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfVkVSU0lPTgogICAgICAgewogCV9fYnVja2V0c19wdHIgX19mb3JtZXJfYnVja2V0 cyA9IG51bGxwdHI7CiAJc3RkOjpzaXplX3QgX19mb3JtZXJfYnVja2V0X2NvdW50ID0gX01f YnVja2V0X2NvdW50OwotCWNvbnN0IF9fcmVoYXNoX3N0YXRlJiBfX2Zvcm1lcl9zdGF0ZSA9 IF9NX3JlaGFzaF9wb2xpY3kuX01fc3RhdGUoKTsKKwlfX3JlaGFzaF9ndWFyZF90IF9fcmVo YXNoX2d1YXJkKF9NX3JlaGFzaF9wb2xpY3kpOwogCiAJaWYgKF9NX2J1Y2tldF9jb3VudCAh PSBfX2h0Ll9NX2J1Y2tldF9jb3VudCkKIAkgIHsKQEAgLTEzNTksNiArMTM1Niw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJICAgIF9NX2Fzc2lnbihzdGQ6OmZv cndhcmQ8X0h0PihfX2h0KSwgX19yb2FuKTsKIAkgICAgaWYgKF9fZm9ybWVyX2J1Y2tldHMp CiAJICAgICAgX01fZGVhbGxvY2F0ZV9idWNrZXRzKF9fZm9ybWVyX2J1Y2tldHMsIF9fZm9y bWVyX2J1Y2tldF9jb3VudCk7CisJICAgIF9fcmVoYXNoX2d1YXJkLl9NX3Jlc2V0ID0gZmFs c2U7CiAJICB9CiAJX19jYXRjaCguLi4pCiAJICB7CkBAIC0xMzY2LDcgKzEzNjQsNiBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCSAgICAgIHsKIAkJLy8gUmVzdG9y ZSBwcmV2aW91cyBidWNrZXRzLgogCQlfTV9kZWFsbG9jYXRlX2J1Y2tldHMoKTsKLQkJX01f cmVoYXNoX3BvbGljeS5fTV9yZXNldChfX2Zvcm1lcl9zdGF0ZSk7CiAJCV9NX2J1Y2tldHMg PSBfX2Zvcm1lcl9idWNrZXRzOwogCQlfTV9idWNrZXRfY291bnQgPSBfX2Zvcm1lcl9idWNr ZXRfY291bnQ7CiAJICAgICAgfQpAQCAtMjE0MiwxNyArMjEzOSwxOCBAQCBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCQkJICBfX25vZGVfcHRyIF9fbm9kZSwgc2l6ZV90 eXBlIF9fbl9lbHQpCiAgICAgLT4gaXRlcmF0b3IKICAgICB7Ci0gICAgICBjb25zdCBfX3Jl aGFzaF9zdGF0ZSYgX19zYXZlZF9zdGF0ZSA9IF9NX3JlaGFzaF9wb2xpY3kuX01fc3RhdGUo KTsKKyAgICAgIF9fcmVoYXNoX2d1YXJkX3QgX19yZWhhc2hfZ3VhcmQoX01fcmVoYXNoX3Bv bGljeSk7CiAgICAgICBzdGQ6OnBhaXI8Ym9vbCwgc3RkOjpzaXplX3Q+IF9fZG9fcmVoYXNo CiAJPSBfTV9yZWhhc2hfcG9saWN5Ll9NX25lZWRfcmVoYXNoKF9NX2J1Y2tldF9jb3VudCwg X01fZWxlbWVudF9jb3VudCwKIAkJCQkJICBfX25fZWx0KTsKIAogICAgICAgaWYgKF9fZG9f cmVoYXNoLmZpcnN0KQogCXsKLQkgIF9NX3JlaGFzaChfX2RvX3JlaGFzaC5zZWNvbmQsIF9f c2F2ZWRfc3RhdGUpOworCSAgX01fcmVoYXNoKF9fZG9fcmVoYXNoLnNlY29uZCwgdHJ1ZV90 eXBle30pOwogCSAgX19ia3QgPSBfTV9idWNrZXRfaW5kZXgoX19jb2RlKTsKIAl9CiAKKyAg ICAgIF9fcmVoYXNoX2d1YXJkLl9NX3Jlc2V0ID0gZmFsc2U7CiAgICAgICB0aGlzLT5fTV9z dG9yZV9jb2RlKCpfX25vZGUsIF9fY29kZSk7CiAKICAgICAgIC8vIEFsd2F5cyBpbnNlcnQg YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVja2V0LgpAQCAtMjE3MiwxMyArMjE3MCwxNCBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCQkJIF9faGFzaF9jb2RlIF9f Y29kZSwgX19ub2RlX3B0ciBfX25vZGUpCiAgICAgLT4gaXRlcmF0b3IKICAgICB7Ci0gICAg ICBjb25zdCBfX3JlaGFzaF9zdGF0ZSYgX19zYXZlZF9zdGF0ZSA9IF9NX3JlaGFzaF9wb2xp Y3kuX01fc3RhdGUoKTsKKyAgICAgIF9fcmVoYXNoX2d1YXJkX3QgX19yZWhhc2hfZ3VhcmQo X01fcmVoYXNoX3BvbGljeSk7CiAgICAgICBzdGQ6OnBhaXI8Ym9vbCwgc3RkOjpzaXplX3Q+ IF9fZG9fcmVoYXNoCiAJPSBfTV9yZWhhc2hfcG9saWN5Ll9NX25lZWRfcmVoYXNoKF9NX2J1 Y2tldF9jb3VudCwgX01fZWxlbWVudF9jb3VudCwgMSk7CiAKICAgICAgIGlmIChfX2RvX3Jl aGFzaC5maXJzdCkKLQlfTV9yZWhhc2goX19kb19yZWhhc2guc2Vjb25kLCBfX3NhdmVkX3N0 YXRlKTsKKwlfTV9yZWhhc2goX19kb19yZWhhc2guc2Vjb25kLCBmYWxzZV90eXBle30pOwog CisgICAgICBfX3JlaGFzaF9ndWFyZC5fTV9yZXNldCA9IGZhbHNlOwogICAgICAgdGhpcy0+ X01fc3RvcmVfY29kZSgqX19ub2RlLCBfX2NvZGUpOwogICAgICAgY29uc3Qga2V5X3R5cGUm IF9fayA9IF9FeHRyYWN0S2V5e30oX19ub2RlLT5fTV92KCkpOwogICAgICAgc2l6ZV90eXBl IF9fYmt0ID0gX01fYnVja2V0X2luZGV4KF9fY29kZSk7CkBAIC0yNTA5LDM5ICsyNTA4LDE2 IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJICAgICAgIF9IYXNoLCBf UmFuZ2VIYXNoLCBfVW51c2VkLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICAgcmVo YXNoKHNpemVfdHlwZSBfX2JrdF9jb3VudCkKICAgICB7Ci0gICAgICBjb25zdCBfX3JlaGFz aF9zdGF0ZSYgX19zYXZlZF9zdGF0ZSA9IF9NX3JlaGFzaF9wb2xpY3kuX01fc3RhdGUoKTsK KyAgICAgIF9fcmVoYXNoX2d1YXJkX3QgX19yZWhhc2hfZ3VhcmQoX01fcmVoYXNoX3BvbGlj eSk7CiAgICAgICBfX2JrdF9jb3VudAogCT0gc3RkOjptYXgoX01fcmVoYXNoX3BvbGljeS5f TV9ia3RfZm9yX2VsZW1lbnRzKF9NX2VsZW1lbnRfY291bnQgKyAxKSwKIAkJICAgX19ia3Rf Y291bnQpOwogICAgICAgX19ia3RfY291bnQgPSBfTV9yZWhhc2hfcG9saWN5Ll9NX25leHRf Ymt0KF9fYmt0X2NvdW50KTsKIAogICAgICAgaWYgKF9fYmt0X2NvdW50ICE9IF9NX2J1Y2tl dF9jb3VudCkKLQlfTV9yZWhhc2goX19ia3RfY291bnQsIF9fc2F2ZWRfc3RhdGUpOwotICAg ICAgZWxzZQotCS8vIE5vIHJlaGFzaCwgcmVzdG9yZSBwcmV2aW91cyBzdGF0ZSB0byBrZWVw IGl0IGNvbnNpc3RlbnQgd2l0aAotCS8vIGNvbnRhaW5lciBzdGF0ZS4KLQlfTV9yZWhhc2hf cG9saWN5Ll9NX3Jlc2V0KF9fc2F2ZWRfc3RhdGUpOwotICAgIH0KLQotICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1lIF9BbGxvYywKLQkgICB0 eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAotCSAgIHR5cGVuYW1lIF9I YXNoLCB0eXBlbmFtZSBfUmFuZ2VIYXNoLCB0eXBlbmFtZSBfVW51c2VkLAotCSAgIHR5cGVu YW1lIF9SZWhhc2hQb2xpY3ksIHR5cGVuYW1lIF9UcmFpdHM+Ci0gICAgdm9pZAotICAgIF9I YXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCi0J ICAgICAgIF9IYXNoLCBfUmFuZ2VIYXNoLCBfVW51c2VkLCBfUmVoYXNoUG9saWN5LCBfVHJh aXRzPjo6Ci0gICAgX01fcmVoYXNoKHNpemVfdHlwZSBfX2JrdF9jb3VudCwgY29uc3QgX19y ZWhhc2hfc3RhdGUmIF9fc3RhdGUpCi0gICAgewotICAgICAgX190cnkKLQl7Ci0JICBfTV9y ZWhhc2hfYXV4KF9fYmt0X2NvdW50LCBfX3VuaXF1ZV9rZXlze30pOwotCX0KLSAgICAgIF9f Y2F0Y2goLi4uKQogCXsKLQkgIC8vIEEgZmFpbHVyZSBoZXJlIG1lYW5zIHRoYXQgYnVja2V0 cyBhbGxvY2F0aW9uIGZhaWxlZC4gIFdlIG9ubHkKLQkgIC8vIGhhdmUgdG8gcmVzdG9yZSBo YXNoIHBvbGljeSBwcmV2aW91cyBzdGF0ZS4KLQkgIF9NX3JlaGFzaF9wb2xpY3kuX01fcmVz ZXQoX19zdGF0ZSk7Ci0JICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKKwkgIF9NX3JlaGFz aChfX2JrdF9jb3VudCwgX191bmlxdWVfa2V5c3t9KTsKKwkgIF9fcmVoYXNoX2d1YXJkLl9N X3Jlc2V0ID0gZmFsc2U7CiAJfQogICAgIH0KIApAQCAtMjU1Myw3ICsyNTI5LDcgQEAgX0dM SUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICB2b2lkCiAgICAgX0hhc2h0YWJs ZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKIAkgICAgICAg X0hhc2gsIF9SYW5nZUhhc2gsIF9VbnVzZWQsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoK LSAgICBfTV9yZWhhc2hfYXV4KHNpemVfdHlwZSBfX2JrdF9jb3VudCwgdHJ1ZV90eXBlIC8q IF9fdWtzICovKQorICAgIF9NX3JlaGFzaChzaXplX3R5cGUgX19ia3RfY291bnQsIHRydWVf dHlwZSAvKiBfX3VrcyAqLykKICAgICB7CiAgICAgICBfX2J1Y2tldHNfcHRyIF9fbmV3X2J1 Y2tldHMgPSBfTV9hbGxvY2F0ZV9idWNrZXRzKF9fYmt0X2NvdW50KTsKICAgICAgIF9fbm9k ZV9wdHIgX19wID0gX01fYmVnaW4oKTsKQEAgLTI1OTYsNyArMjU3Miw3IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgdm9pZAogICAgIF9IYXNodGFibGU8X0tl eSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAJICAgICAgIF9IYXNo LCBfUmFuZ2VIYXNoLCBfVW51c2VkLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6Ci0gICAg X01fcmVoYXNoX2F1eChzaXplX3R5cGUgX19ia3RfY291bnQsIGZhbHNlX3R5cGUgLyogX191 a3MgKi8pCisgICAgX01fcmVoYXNoKHNpemVfdHlwZSBfX2JrdF9jb3VudCwgZmFsc2VfdHlw ZSAvKiBfX3VrcyAqLykKICAgICB7CiAgICAgICBfX2J1Y2tldHNfcHRyIF9fbmV3X2J1Y2tl dHMgPSBfTV9hbGxvY2F0ZV9idWNrZXRzKF9fYmt0X2NvdW50KTsKICAgICAgIF9fbm9kZV9w dHIgX19wID0gX01fYmVnaW4oKTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRl L2JpdHMvaGFzaHRhYmxlX3BvbGljeS5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9o YXNodGFibGVfcG9saWN5LmgKaW5kZXggNWQxNjI0NjNkYzMuLjhiOTYyNmIxNTc1IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0YWJsZV9wb2xpY3kuaAor KysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0YWJsZV9wb2xpY3kuaApAQCAt NzE1LDYgKzcxNSwyNiBAQCBuYW1lc3BhY2UgX19kZXRhaWwKICAgICBzdGQ6OnNpemVfdAlf TV9uZXh0X3Jlc2l6ZTsKICAgfTsKIAorICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVoYXNoUG9s aWN5PgorICAgIHN0cnVjdCBfUmVoYXNoU3RhdGVHdWFyZAorICAgIHsKKyAgICAgIF9SZWhh c2hQb2xpY3kmIF9NX3JlaGFzaF9wb2xpY3k7CisgICAgICB0eXBlbmFtZSBfUmVoYXNoUG9s aWN5OjpfU3RhdGUgX01fcHJldl9zdGF0ZTsKKyAgICAgIGJvb2wgX01fcmVzZXQgPSB0cnVl OworCisgICAgICBfUmVoYXNoU3RhdGVHdWFyZChfUmVoYXNoUG9saWN5JiBfX3BvbGljeSkK KyAgICAgIDogX01fcmVoYXNoX3BvbGljeShfX3BvbGljeSkKKyAgICAgICwgX01fcHJldl9z dGF0ZShfX3BvbGljeS5fTV9zdGF0ZSgpKQorICAgICAgeyB9CisgICAgICBfUmVoYXNoU3Rh dGVHdWFyZChjb25zdCBfUmVoYXNoU3RhdGVHdWFyZCYpID0gZGVsZXRlOworCisgICAgICB+ X1JlaGFzaFN0YXRlR3VhcmQoKQorICAgICAgeworCWlmIChfTV9yZXNldCkKKwkgIF9NX3Jl aGFzaF9wb2xpY3kuX01fcmVzZXQoX01fcHJldl9zdGF0ZSk7CisgICAgICB9CisgICAgfTsK KwogICAvLyBCYXNlIGNsYXNzZXMgZm9yIHN0ZDo6X0hhc2h0YWJsZS4gIFdlIGRlZmluZSB0 aGVzZSBiYXNlIGNsYXNzZXMKICAgLy8gYmVjYXVzZSBpbiBzb21lIGNhc2VzIHdlIHdhbnQg dG8gZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24KICAgLy8gdGhlIHZhbHVlIG9m IGEgcG9saWN5IGNsYXNzLiAgSW4gc29tZSBjYXNlcyB0aGUgcG9saWN5IGNsYXNzCkBAIC0x MDA3LDcgKzEwMjcsNyBAQCBuYW1lc3BhY2UgX19kZXRhaWwKIAkJICAgICAgY29uc3QgX05v ZGVHZXR0ZXImIF9fbm9kZV9nZW4sIGZhbHNlX3R5cGUgX191a3MpCiAgICAgICB7CiAJdXNp bmcgX19yZWhhc2hfdHlwZSA9IHR5cGVuYW1lIF9faGFzaHRhYmxlOjpfX3JlaGFzaF90eXBl OwotCXVzaW5nIF9fcmVoYXNoX3N0YXRlID0gdHlwZW5hbWUgX19oYXNodGFibGU6Ol9fcmVo YXNoX3N0YXRlOworCXVzaW5nIF9fcmVoYXNoX2d1YXJkX3QgPSB0eXBlbmFtZSBfX2hhc2h0 YWJsZTo6X19yZWhhc2hfZ3VhcmRfdDsKIAl1c2luZyBwYWlyX3R5cGUgPSBzdGQ6OnBhaXI8 Ym9vbCwgc3RkOjpzaXplX3Q+OwogCiAJc2l6ZV90eXBlIF9fbl9lbHQgPSBfX2RldGFpbDo6 X19kaXN0YW5jZV9mdyhfX2ZpcnN0LCBfX2xhc3QpOwpAQCAtMTAxNiwxNCArMTAzNiwxNSBA QCBuYW1lc3BhY2UgX19kZXRhaWwKIAogCV9faGFzaHRhYmxlJiBfX2ggPSBfTV9jb25qdXJl X2hhc2h0YWJsZSgpOwogCV9fcmVoYXNoX3R5cGUmIF9fcmVoYXNoID0gX19oLl9NX3JlaGFz aF9wb2xpY3k7Ci0JY29uc3QgX19yZWhhc2hfc3RhdGUmIF9fc2F2ZWRfc3RhdGUgPSBfX3Jl aGFzaC5fTV9zdGF0ZSgpOworCV9fcmVoYXNoX2d1YXJkX3QgX19yZWhhc2hfZ3VhcmQoX19y ZWhhc2gpOwogCXBhaXJfdHlwZSBfX2RvX3JlaGFzaCA9IF9fcmVoYXNoLl9NX25lZWRfcmVo YXNoKF9faC5fTV9idWNrZXRfY291bnQsCiAJCQkJCQkJX19oLl9NX2VsZW1lbnRfY291bnQs CiAJCQkJCQkJX19uX2VsdCk7CiAKIAlpZiAoX19kb19yZWhhc2guZmlyc3QpCi0JICBfX2gu X01fcmVoYXNoKF9fZG9fcmVoYXNoLnNlY29uZCwgX19zYXZlZF9zdGF0ZSk7CisJICBfX2gu X01fcmVoYXNoKF9fZG9fcmVoYXNoLnNlY29uZCwgX191a3MpOwogCisJX19yZWhhc2hfZ3Vh cmQuX01fcmVzZXQgPSBmYWxzZTsKIAlmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19m aXJzdCkKIAkgIF9faC5fTV9pbnNlcnQoKl9fZmlyc3QsIF9fbm9kZV9nZW4sIF9fdWtzKTsK ICAgICAgIH0K --------------b5ylP0yvS0VqielXJclBB2HV--