From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20619 invoked from network); 16 Jul 2023 23:39:46 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 16 Jul 2023 23:39:46 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1689550786; b=V7o+/vlMUtbbNQgzgAFpBU6/6WiRwzlzpkIeZYYa55bhlmDwi7ZC8aT3bawV3iIdOjpRsMmwCk zSx5dsHiYp3qUqklpLzBM6jst6rwYCdOGCyumOCyqYsPV8uoCeqeQr3Nv66gorMpvSjzCWJ11J /FR559OdXXmFx8y2ahX/xqN5TZHu/MnzBkhvlPil84SOpz9CeJ0LAKlu6gzqn/GR0PxiCe47je jJsNA7BBsT9LgnSFJW3QbBa7Qne9KeV6gIHxjZIPz2Efs/TkLB24Mp9Ut1nztfWqC4/cpoU48A Tk0Awqi87xZpZYyQNJFxB2QyVdze1QDDpa5YiFtVYY5dXQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lj1-f174.google.com) smtp.remote-ip=209.85.208.174; dkim=pass header.d=brasslantern-com.20221208.gappssmtp.com header.s=20221208 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1689550786; bh=jpIxo1FS1hs58PkTfA2z9oiHvIwqShhjbyl/zSvC9xk=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=O5Tgx2/1GjtlOHNr1JmdmOa6VuZnvjzcoja1fXxEhRJ0kGTSVaatpgQOhcgTfHfxQUgCSKp0sz tHOgRK+B6MlVv7GUIZO84aus3IlvhB799JRCQo1AWS6aBFvg560cw0RdSiwK93CjtpWoTXGWtY XQZdDGeTeaEGTQU2/2X1yCmQohoSl0evJVB1vr7AGw5I7BL2B68goNTmITmXMXmyU+J038iK65 bGs1KvhHO0sG76x/M4ZUNbtmED1jcxZKUgZCVMhnLsEXtP9qOyWpLp40hQ353ZEPWDhp17rFYq e/dztr21jrbcKYcAmoZnHunTmIeNG9nqyMVYOoHTxN7zRw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=dgNbbySXZ2l29+Zf7uvi4OLdXaA3EwsKpvfx3EBBRSw=; b=kr46w7V/KTIrK0BGzwRqXVSmjQ TjZhZHQsBiJNMXGViE8IykqgeTOIErnkDLY5VOWblrDiaULZe5HfYibZ4r63r0IZT5RwvdNKNMWpP hGStKbijnhxZC+nb18k74DGl/Zd5MNgGiOSg6CG8V5BdahBBphDVa851iqteNPeuxMsOUuv9h/LXa xrjC5NruGBleewlo4U7S5j/xuWI9hRjsdZb4yeEZyfCmYnqDwsOM/aglgDr8KwgKkIDgN0hmVc/BJ Ib0cWudY7BNg/y2Io7SJyCDoT8Fbldjuy/ZV03WQlr6iXXCTlEEVhiasdaw+jqeGEMIB6eiOTG1Cw zonE85Qw==; Received: by zero.zsh.org with local id 1qLBL6-000DOG-PV; Sun, 16 Jul 2023 23:39:44 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lj1-f174.google.com) smtp.remote-ip=209.85.208.174; dkim=pass header.d=brasslantern-com.20221208.gappssmtp.com header.s=20221208 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-lj1-f174.google.com ([209.85.208.174]:45536) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1qLBKg-000D4H-Sy; Sun, 16 Jul 2023 23:39:20 +0000 Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-2b700e85950so55930941fa.3 for ; Sun, 16 Jul 2023 16:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20221208.gappssmtp.com; s=20221208; t=1689550757; x=1692142757; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=dgNbbySXZ2l29+Zf7uvi4OLdXaA3EwsKpvfx3EBBRSw=; b=eQnqAnCznjKXqJfo7UEuTxscH4/ZzIZyHj/wZywNcNxGdoTb4G2dCNGAXz+l7dDixn W3p7Mvyhyjcdctaf04jlQ8ze/4s2/4OCLTVXRJOLaZV+YU6KEM0YwYt8ltjfUgfd+jjv 32ny6/lxytuWdq0Md/HDqEnUm3w1gnZRa4QTbge4xLI7o7Lt/7eJ5y6omdUnIUIZgMV7 vNhhEfdbJCG0OHet+DtcOdGJagRncD+H8kPmGmrwTgKab9lULjc67Bkh0n9unQy60HY/ VL83kN+QURJg0koLPTSHuDQMizo0PsiHtY5gWQvCbd7mq+ijaJo8coQPP/+cE0Y6A7LQ SDiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689550757; x=1692142757; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=dgNbbySXZ2l29+Zf7uvi4OLdXaA3EwsKpvfx3EBBRSw=; b=hNNsk2mXHZCT6hjXvPq4VyktpprcNNLqQiaYIwvgy5hNJWtpEsRaM38zskRUzX4/gk gmeT5XHt5hoL+QhFpkvr7+hiymN2ykj8apGFtilOvyilY7OL23VcsH35IJVI4aiLNJwh 92x3g7Pv4MCYqL2WM1PolyWMRrQqxpOSBrq8DQ5WfwQRD4vHVWgSvme1YA0UJAkEx9ID Dic5dOinGMoJiH6NQVyQQpd3uBhR83vPcj8SJmbr0uIRVfe+3200jsquek83h83OGaoW 5DKZFuV3Nf/5Jk/oZvu8RL2R5d/n8wc4LX0ukuOsmmHtGvj6qfstyU25Ga27nj48fPEN iR8Q== X-Gm-Message-State: ABy/qLYuOJgS2LS8JO0UD4sibeoA3WZc7qBPugXna8G6GcIpnymq+wBb QaiYFFFiybpqBKwRBZeJDF+y5atzeZ3tPkKABYWjWu+SVW5OtROFqzM= X-Google-Smtp-Source: APBJJlGUr0n82g52o0CmlMCl4lzDNItrL12ntx3DMSymZzRxeS2p8OmnLWdzUypRmyULePidvMJVin2709YAVbr9lZ0= X-Received: by 2002:ac2:5e6c:0:b0:4fb:79b5:5512 with SMTP id a12-20020ac25e6c000000b004fb79b55512mr5516265lfr.66.1689550757186; Sun, 16 Jul 2023 16:39:17 -0700 (PDT) MIME-Version: 1.0 From: Bart Schaefer Date: Sun, 16 Jul 2023 16:39:06 -0700 Message-ID: Subject: [PATCH] Misc. named reference updates To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000b732ee0600a33045" X-Seq: 51945 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000b732ee0600a33045 Content-Type: text/plain; charset="UTF-8" This patch covers a bunch of odds and ends referenced or revealed by Jun T.'s commentary over the last few days. 1) Document the behavior of "typeset -n existing_var", (via Jun T. comment) 2) Prohibit "typeset -nm pattern" because, well, it's insane. Add test. 3) Improve doc for ${(!)ref} including ${{t!)ref} (Jun T.) 4) Fix doc for how-to unset of a named ref (Jun T.) 5) Allow "typeset +r -n ref" and "typeset +r +n ref" (Jun T.) 6) Fix "typeset -r -n ref=param" to create readonly references 7) Avoid accidental removal of PM_UNSET flag (Jun T.) and update test 8) Fix "typeset -gn ref=value" and add a test for it 9) Add tests for read-only reference behavior 10) Fix infinite recursion when resolving scope of an unset local named reference, add test. RE #5: Not explicitly called out anywhere yet (suggestions?) but notice that parameter type conversions occur before parameter assignments when using "typeset [options] var=val". See K01 test. RE #6: There is an explicit exception to the above for "typeset -r var=val". I'm not entirely happy with the way this had to be fixed for -n, but it's necessary to prevent following the reference. RE #10: Previously if a local named reference was unset and an assignment was made to the name, resolve_nameref() could find a reference of the same name in the enclosing scope and end up in an infinite loop. Aside from the loop, looking up-scope is wrong just from expected behavior of locals. The fix results in assigning a new referent to the (thereafter not unset) reference. --000000000000b732ee0600a33045 Content-Type: text/plain; charset="US-ASCII"; name="nameref-repairs2.txt" Content-Disposition: attachment; filename="nameref-repairs2.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk62fasu0 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvYnVpbHRpbnMueW8gYi9Eb2MvWnNoL2J1aWx0aW5zLnlvCmlu ZGV4IDUzOTNjYjE0OS4uMzNiMTNhYzE2IDEwMDY0NAotLS0gYS9Eb2MvWnNoL2J1aWx0aW5zLnlv CisrKyBiL0RvYy9ac2gvYnVpbHRpbnMueW8KQEAgLTIwNjAsNiArMjA2MCwxMSBAQCBmdW5jdGlv biB1bmxlc3MgYHR0KC1nIC1uKScgaXMgc3BlY2lmaWVkLCBhbmQgYW55IGxvY2FsIHBhcmFtZXRl ciAob2YKIGFueSB0eXBlKSB3aXRoIHRoZSBzYW1lIHZhcihuYW1lKSBzdXBwbGFudHMgYSBuYW1l ZCByZWZlcmVuY2UgZnJvbSBhCiBzdXJyb3VuZGluZyBzY29wZS4KIAorQSBzY2FsYXIgcGFyYW1l dGVyLCBpbmNsdWRpbmcgYW4gZXhpc3RpbmcgbmFtZWQgcmVmZXJlbmNlLCBtYXkgYmUKK2NvbnZl cnRlZCB0byBhIG5ldyBuYW1lZCByZWZlcmVuY2UgYnkgYHR0KHR5cGVzZXQgLW4gKXZhcihuYW1l KScsIHNvCit0aGUgYHR0KC1wKScgb3B0aW9uIG11c3QgYmUgaW5jbHVkZWQgdG8gZGlzcGxheSB0 aGUgdmFsdWUgb2YgYQorc3BlY2lmaWMgbmFtZWQgcmVmZXJlbmNlIHZhcihuYW1lKS4KKwogSWYg bm8gYXR0cmlidXRlIGZsYWdzIGFyZSBnaXZlbiwgYW5kIGVpdGhlciBubyB2YXIobmFtZSkgYXJn dW1lbnRzIGFyZQogcHJlc2VudCBvciB0aGUgZmxhZyB0dCgrbSkgaXMgdXNlZCwgdGhlbiBlYWNo IHBhcmFtZXRlciBuYW1lIHByaW50ZWQgaXMKIHByZWNlZGVkIGJ5IGEgbGlzdCBvZiB0aGUgYXR0 cmlidXRlcyBvZiB0aGF0IHBhcmFtZXRlciAodHQoYXJyYXkpLApAQCAtMjEwNCw3ICsyMTA5LDgg QEAgaXMgbm90IHVzZWQgaW4gdGhpcyBjYXNlKS4KIAogSWYgdGhlIHR0KCtnKSBmbGFnIGlzIGNv bWJpbmVkIHdpdGggdHQoLW0pLCBhIG5ldyBsb2NhbCBwYXJhbWV0ZXIgaXMKIGNyZWF0ZWQgZm9y IGV2ZXJ5IG1hdGNoaW5nIHBhcmFtZXRlciB0aGF0IGlzIG5vdCBhbHJlYWR5IGxvY2FsLiAgT3Ro ZXJ3aXNlCi10dCgtbSkgYXBwbGllcyBhbGwgb3RoZXIgZmxhZ3Mgb3IgYXNzaWdubWVudHMgdG8g dGhlIGV4aXN0aW5nIHBhcmFtZXRlcnMuCit0dCgtbSkgYXBwbGllcyBhbGwgb3RoZXIgZmxhZ3Mg b3IgYXNzaWdubWVudHMgdG8gdGhlIGV4aXN0aW5nIHBhcmFtZXRlcnMsCitleGNlcHQgdGhhdCB0 aGUgdHQoLW4pIG9wdGlvbiBjYW5ub3QgY3JlYXRlIG5hbWVkIHJlZmVyZW5jZXMgaW4gdGhpcyB3 YXkuCiAKIEV4Y2VwdCB3aGVuIGFzc2lnbm1lbnRzIGFyZSBtYWRlIHdpdGggdmFyKG5hbWUpdHQo PSl2YXIodmFsdWUpLCB1c2luZwogdHQoK20pIGZvcmNlcyB0aGUgbWF0Y2hpbmcgcGFyYW1ldGVy cyBhbmQgdGhlaXIgYXR0cmlidXRlcyB0byBiZSBwcmludGVkLApkaWZmIC0tZ2l0IGEvRG9jL1pz aC9leHBuLnlvIGIvRG9jL1pzaC9leHBuLnlvCmluZGV4IDdiYzczNjQ3MC4uZjg3ODMyZTc1IDEw MDY0NAotLS0gYS9Eb2MvWnNoL2V4cG4ueW8KKysrIGIvRG9jL1pzaC9leHBuLnlvCkBAIC05ODcs NiArOTg3LDExIEBAIG1lYW5zIHRoZSBzYW1lIHRoaW5nIGFzIHRoZSBtb3JlIHJlYWRhYmxlIGAo dHQoJSVxcXEpKScuICBUaGUKIGZvbGxvd2luZyBmbGFncyBhcmUgc3VwcG9ydGVkOgogCiBzdGFy dGl0ZW0oKQoraXRlbSh0dCghKSkoCitXaGVuIHRoZSBwYXJhbWV0ZXIgYmVpbmcgZXhwYW5kZWQg aXMgYSBuYW1lZCByZWZlcmVuY2UsIHRoZSByZWZlcmVuY2UKK2l0c2VsZiBpcyBleGFtaW5lZCBh bmQgdGh1cyBpcyBlbShub3QpIHJlc29sdmVkIHRvIGl0cyByZWZlcmVudC4gIEluCitrc2ggZW11 bGF0aW9uLCB0aGUgcGFyZW5zIGFyb3VuZCB0aGlzIGZsYWcgYXJlIG9wdGlvbmFsLgorKQogaXRl bSh0dCgjKSkoCiBFdmFsdWF0ZSB0aGUgcmVzdWx0aW5nIHdvcmRzIGFzIG51bWVyaWMgZXhwcmVz c2lvbnMgYW5kIGludGVycHJldAogdGhlc2UgYXMgY2hhcmFjdGVyIGNvZGVzLiAgT3V0cHV0IHRo ZSBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMuICBOb3RlCkBAIC0xMjQ1LDcgKzEyNTAsOCBAQCBp dGVtKHR0KGhpZGV2YWwpKSgKIGZvciBwYXJhbWV0ZXJzIHdpdGggdGhlIGBoaWRldmFsJyBmbGFn ICh0dCgtSCkpCiApCiBpdGVtKHR0KG5hbWVyZWYpKSgKLWZvciBuYW1lZCByZWZlcmVuY2VzIGhh dmluZyBhbiBlbXB0eSB2YWx1ZSAodHQoLW4pKQorZm9yIG5hbWVkIHJlZmVyZW5jZXMgKHR0KHR5 cGVzZXQgLW4pKSBlaXRoZXIgaGF2aW5nIGFuIGVtcHR5IHZhbHVlIG9yCit3aGVuIGNvbWJpbmVk IHdpdGggYHR0KCEpJyBhcyBpbiBgdHQoJHtMUEFSKCkhdCl0dChSUEFSKCl2YXIocm5hbWUpfSkn CiApCiBpdGVtKHR0KHNwZWNpYWwpKSgKIGZvciBzcGVjaWFsIHBhcmFtZXRlcnMgZGVmaW5lZCBi eSB0aGUgc2hlbGwKZGlmZiAtLWdpdCBhL0RvYy9ac2gvcGFyYW1zLnlvIGIvRG9jL1pzaC9wYXJh bXMueW8KaW5kZXggZTA0MTBkNjczLi41NjUzYjNiYzkgMTAwNjQ0Ci0tLSBhL0RvYy9ac2gvcGFy YW1zLnlvCisrKyBiL0RvYy9ac2gvcGFyYW1zLnlvCkBAIC02NzIsOSArNjcyLDkgQEAgb2YgdmFy KHBuYW1lKSBpbiBhc3NpZ25tZW50cyBhbmQgZXhwYW5zaW9ucyBpbnN0ZWFkIGFzc2lnbiB0byBv cgogZXhwYW5kIHZhcihybmFtZSkuICBUaGlzIGFsc28gYXBwbGllcyB0byBgdHQodW5zZXQgKXZh cihwbmFtZSknIGFuZCB0bwogbW9zdCBzdWJzZXF1ZW50IHVzZXMgb2YgYHR0KHR5cGVzZXQpJyB3 aXRoIHRoZSBleGNlcHRpb24gb2YKIGB0dCh0eXBlc2V0IC1uKScgYW5kIGB0dCh0eXBlc2V0ICtu KScsIHNvIHRvIHJlbW92ZSBhIG5hbWVkIHJlZmVyZW5jZSwKLXVzZSBlaXRoZXIgYHR0KHVuc2V0 IC1uICl2YXIocG5hbWUpJyBvciBvbmUgb2Y6Cit1c2UgZWl0aGVyIGB0dCh1bnNldCAtbiApdmFy KHBuYW1lKScgKHByZWZlcnJlZCkgb3Igb25lIG9mOgogaWZ6bWFuKCkKLWV4YW1wbGUodHQodHlw ZXNldCAtbiApdmFyKHBuYW1lKQorZXhhbXBsZSh0dCh0eXBlc2V0IC1uICl2YXIocG5hbWU9KQog dHQodHlwZXNldCArbiApdmFyKHBuYW1lKSkKIAogZm9sbG93ZWQgYnkKZGlmZiAtLWdpdCBhL1Ny Yy9idWlsdGluLmMgYi9TcmMvYnVpbHRpbi5jCmluZGV4IDY2OWE0NzA5Mi4uNDhhNWYwOGYzIDEw MDY0NAotLS0gYS9TcmMvYnVpbHRpbi5jCisrKyBiL1NyYy9idWlsdGluLmMKQEAgLTIyNDgsMTAg KzIyNDgsMTQgQEAgdHlwZXNldF9zaW5nbGUoY2hhciAqY25hbWUsIGNoYXIgKnBuYW1lLCBQYXJh bSBwbSwgaW50IGZ1bmMsCiAJICAgIHplcnJuYW0oY25hbWUsICIlczogcmVzdHJpY3RlZCIsIHBu YW1lKTsKIAkgICAgcmV0dXJuIHBtOwogCX0KLQlpZiAoKHBtLT5ub2RlLmZsYWdzICYgUE1fUkVB RE9OTFkpICYmCi0JICAgIChwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYgJiBvZmYpKSB7Ci0J ICAgIHplcnJuYW0oY25hbWUsICIlczogcmVhZC1vbmx5IHJlZmVyZW5jZSIsIHBuYW1lKTsKLQkg ICAgcmV0dXJuIHBtOworCWlmICgocG0tPm5vZGUuZmxhZ3MgJiBQTV9SRUFET05MWSkgJiYgIShv ZmYgJiBQTV9SRUFET05MWSkgJiYKKwkgICAgLyogSXQgc2VlbXMgYXMgdGhvdWdoIHRoZXNlIGNo ZWNrcyBzaG91bGQgbm90IGJlIHNwZWNpZmljIHRvCisJICAgICAqIFBNX05BTUVSRUYsIGJ1dCBj aGFuZ2luZyB0aGF0IGNoYW5nZXMgaGlzdG9yaWMgYmVoYXZpb3IgKi8KKwkgICAgKChvbiAmIFBN X05BTUVSRUYpICE9IChwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpIHx8CisJICAgICAoYXNn ICYmIChwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpKSkpIHsKKwkgICAgemVycm5hbShjbmFt ZSwgIiVzOiByZWFkLW9ubHkgJXMiLCBwbmFtZSwKKwkJICAgIChwbS0+bm9kZS5mbGFncyAmIFBN X05BTUVSRUYpID8gInJlZmVyZW5jZSIgOiAidmFyaWFibGUiKTsKKwkgICAgcmV0dXJuIE5VTEw7 CiAJfQogCWlmICgob24gJiBQTV9VTklRVUUpICYmICEocG0tPm5vZGUuZmxhZ3MgJiBQTV9SRUFE T05MWSAmIH5vZmYpKSB7CiAJICAgIFBhcmFtIGFwbTsKQEAgLTI2OTMsNyArMjY5Nyw3IEBAIGJp bl90eXBlc2V0KGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBMaW5rTGlzdCBhc3NpZ25zLCBPcHRp b25zIG9wcywgaW50IGZ1bmMpCiAJICAgIG9mZiB8PSBiaXQ7CiAgICAgfQogICAgIGlmIChPUFRf TUlOVVMob3BzLCduJykpIHsKLQlpZiAoKG9uICYgflBNX1JFQURPTkxZKXxvZmYpIHsKKwlpZiAo KG9ufG9mZikgJiB+UE1fUkVBRE9OTFkpIHsKIAkgICAgendhcm5uYW0obmFtZSwgIm5vIG90aGVy IGF0dHJpYnV0ZXMgYWxsb3dlZCB3aXRoIC1uIik7CiAJICAgIHJldHVybiAxOwogCX0KQEAgLTMw MjEsNiArMzAyNSwxMyBAQCBiaW5fdHlwZXNldChjaGFyICpuYW1lLCBjaGFyICoqYXJndiwgTGlu a0xpc3QgYXNzaWducywgT3B0aW9ucyBvcHMsIGludCBmdW5jKQogICAgIC8qIFdpdGggdGhlIC1t IG9wdGlvbiwgdHJlYXQgYXJndW1lbnRzIGFzIGdsb2IgcGF0dGVybnMgKi8KICAgICBpZiAoT1BU X0lTU0VUKG9wcywnbScpKSB7CiAJaWYgKCFPUFRfSVNTRVQob3BzLCdwJykpIHsKKwkgICAgaWYg KG9uICYgUE1fTkFNRVJFRikgeworCQkvKiBJdCdzIGdlbmVyYWxseSB1bndpc2UgdG8gbWFzcy1j aGFuZ2UgdGhlIHR5cGVzIG9mCisJCSAqIHBhcmFtZXRlcnMsIGJ1dCBmb3IgbmFtZXJlZnMgaXQg d291bGQgYmUgZmF0YWwgKi8KKwkJdW5xdWV1ZV9zaWduYWxzKCk7CisJCXplcnJuYW0obmFtZSwg ImludmFsaWQgcmVmZXJlbmNlIik7CisJCXJldHVybiAxOworCSAgICB9CiAJICAgIGlmICghKG9u fHJvZmYpKQogCQlwcmludGZsYWdzIHw9IFBSSU5UX1RZUEU7CiAJICAgIGlmICghb24pCkBAIC0z MTA0LDEzICszMTE1LDI1IEBAIGJpbl90eXBlc2V0KGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBM aW5rTGlzdCBhc3NpZ25zLCBPcHRpb25zIG9wcywgaW50IGZ1bmMpCiAJICAgIH0KIAkgICAgaWYg KGhuKSB7CiAJCS8qIG5hbWVyZWZzIGFsd2F5cyBzdGFydCBvdmVyIGZyZXNoICovCi0JCWlmICgo KFBhcmFtKWhuKS0+bGV2ZWwgPj0gbG9jYWxsZXZlbCkgeworCQlpZiAoKChQYXJhbSlobiktPmxl dmVsID49IGxvY2FsbGV2ZWwgfHwKKwkJICAgICghKG9uICYgUE1fTE9DQUwpICYmICgoUGFyYW0p aG4pLT5sZXZlbCA8IGxvY2FsbGV2ZWwpKSB7CiAJCSAgICBQYXJhbSBvbGRwbSA9IChQYXJhbSlo bjsKLQkJICAgIGlmICghYXNnLT52YWx1ZS5zY2FsYXIgJiYgb2xkcG0tPnUuc3RyKQorCQkgICAg aWYgKCFhc2ctPnZhbHVlLnNjYWxhciAmJgorCQkJUE1fVFlQRShvbGRwbS0+bm9kZS5mbGFncykg PT0gUE1fU0NBTEFSICYmCisJCQlvbGRwbS0+dS5zdHIpCiAJCQlhc2ctPnZhbHVlLnNjYWxhciA9 IGR1cHN0cmluZyhvbGRwbS0+dS5zdHIpOwotCQkgICAgdW5zZXRwYXJhbV9wbSgoUGFyYW0paG4s IDAsIDEpOworCQkgICAgLyogRGVmZXIgcmVhZC1vbmx5IGVycm9yIHRvIHR5cGVzZXRfc2luZ2xl KCkgKi8KKwkJICAgIGlmICghKGhuLT5mbGFncyAmIFBNX1JFQURPTkxZKSkKKwkJCXVuc2V0cGFy YW1fcG0ob2xkcG0sIDAsIDEpOwogCQl9Ci0JCWhuID0gTlVMTDsKKwkJLyogUGFzc2luZyBhIE5V TEwgcG0gdG8gdHlwZXNldF9zaW5nbGUoKSBtYWtlcyB0aGUKKwkJICogbmFtZXJlZiByZWFkLW9u bHkgYmVmb3JlIGFzc2lnbm1lbnQsIHdoaWNoIGJyZWFrcworCQkgKiAgIHR5cGVzZXQgLXJuIHJl Zj12YXIKKwkJICogc28gdGhpcyBpcyBzcGVjaWFsLWNhc2VkIHRvIHBlcm1pdCB0aGF0IGFjdGlv bgorCQkgKiBsaWtlIGFzc2lnbi1hdC1jcmVhdGUgZm9yIG90aGVyIHBhcmFtZXRlciB0eXBlcy4K KwkJICovCisJCWlmICghKGhuLT5mbGFncyAmIFBNX1JFQURPTkxZKSkKKwkJICAgIGhuID0gTlVM TDsKIAkgICAgfQogCX0KIApkaWZmIC0tZ2l0IGEvU3JjL3BhcmFtcy5jIGIvU3JjL3BhcmFtcy5j CmluZGV4IGY1NzUwYTRiNC4uNTg0MTMwOGQ3IDEwMDY0NAotLS0gYS9TcmMvcGFyYW1zLmMKKysr IGIvU3JjL3BhcmFtcy5jCkBAIC01NDYsNyArNTQ2LDcgQEAgZ2V0cGFyYW1ub2RlKEhhc2hUYWJs ZSBodCwgY29uc3QgY2hhciAqbmFtKQogCX0KICAgICB9CiAKLSAgICBpZiAoaG4gJiYgaHQgPT0g cmVhbHBhcmFtdGFiKQorICAgIGlmIChobiAmJiBodCA9PSByZWFscGFyYW10YWIgJiYgIShobi0+ ZmxhZ3MgJiBQTV9VTlNFVCkpCiAJaG4gPSByZXNvbHZlX25hbWVyZWYoKFBhcmFtKWhuLCBOVUxM KTsKICAgICByZXR1cm4gaG47CiB9CkBAIC0zNzI5LDcgKzM3MjksOSBAQCB1bnNldHBhcmFtX3Bt KFBhcmFtIHBtLCBpbnQgYWx0ZmxhZywgaW50IGV4cCkKICAgICBjaGFyICphbHRyZW1vdmU7CiAK ICAgICBpZiAoKHBtLT5ub2RlLmZsYWdzICYgUE1fUkVBRE9OTFkpICYmIHBtLT5sZXZlbCA8PSBs b2NhbGxldmVsKSB7Ci0JemVycigicmVhZC1vbmx5IHZhcmlhYmxlOiAlcyIsIHBtLT5ub2RlLm5h bSk7CisJemVycigicmVhZC1vbmx5ICVzOiAlcyIsCisJICAgICAocG0tPm5vZGUuZmxhZ3MgJiBQ TV9OQU1FUkVGKSA/ICJyZWZlcmVuY2UiIDogInZhcmlhYmxlIiwKKwkgICAgIHBtLT5ub2RlLm5h bSk7CiAJcmV0dXJuIDE7CiAgICAgfQogICAgIGlmICgocG0tPm5vZGUuZmxhZ3MgJiBQTV9SRVNU UklDVEVEKSAmJiBpc3NldChSRVNUUklDVEVEKSkgewpAQCAtNjE4Miw4ICs2MTg0LDEyIEBAIHJl c29sdmVfbmFtZXJlZihQYXJhbSBwbSwgY29uc3QgQXNnbWVudCBzdG9wKQogCQlzZWVrID0gcmVm bmFtZTsKIAl9CiAgICAgfQotICAgIGVsc2UgaWYgKHBtICYmICEoc3RvcCAmJiAoc3RvcC0+Zmxh Z3MgJiBQTV9OQU1FUkVGKSkpCi0JcmV0dXJuIChIYXNoTm9kZSlwbTsKKyAgICBlbHNlIGlmIChw bSkgeworCWlmICghKHN0b3AgJiYgKHN0b3AtPmZsYWdzICYgUE1fTkFNRVJFRikpKQorCSAgICBy ZXR1cm4gKEhhc2hOb2RlKXBtOworCWlmICghKHBtLT5ub2RlLmZsYWdzICYgUE1fTkFNRVJFRikp CisJICAgIHJldHVybiAocG0tPmxldmVsIDwgbG9jYWxsZXZlbCA/IE5VTEwgOiAoSGFzaE5vZGUp cG0pOworICAgIH0KICAgICBpZiAoc2VlaykgewogCXF1ZXVlX3NpZ25hbHMoKTsKIAkvKiBwbS0+ d2lkdGggaXMgdGhlIG9mZnNldCBvZiBhbnkgc3Vic2NyaXB0ICovCmRpZmYgLS1naXQgYS9UZXN0 L0swMW5hbWVyZWYuenRzdCBiL1Rlc3QvSzAxbmFtZXJlZi56dHN0CmluZGV4IDZhNWU3NjdkZi4u ZDhjMDk4YTk4IDEwMDY0NAotLS0gYS9UZXN0L0swMW5hbWVyZWYuenRzdAorKysgYi9UZXN0L0sw MW5hbWVyZWYuenRzdApAQCAtNTE1LDcgKzUxNSw3IEBAIEY6U2FtZSB0ZXN0LCBzaG91bGQgcGFy dCA1IG91dHB1dCBsb29rIGxpa2UgdGhpcz8KID5wdHIxPXZhbAogPnB0cjI9CiA+dHlwZXNldCAt biBwdHIxPXB0cjIKLT50eXBlc2V0IC1uIHB0cjI9JycKKz50eXBlc2V0IC1uIHB0cjIKID50eXBl c2V0IHB0cjI9dmFsCiAKICBpZiB6bW9kbG9hZCB6c2gvcGFyYW1ldGVyOyB0aGVuCkBAIC02OTQs NCArNjk0LDcyIEBAIEY6Q2hlY2tpbmcgZm9yIGEgYnVnIGluIHptb2Rsb2FkIHRoYXQgYWZmZWN0 cyBsYXRlciB0ZXN0cwogRjpydW5zIGluIGBzZXRvcHQgbm9leGVjYCBzbyAkKC4uLikgcmV0dXJu cyBub3RoaW5nCiAqPypiYWQgbWF0aCBleHByZXNzaW9uOiBlbXB0eSBzdHJpbmcKIAorIHVuc2V0 IC1uIHJlZgorIHR5cGVzZXQgLW4gcmVmPUdMT0JBTAorICgpIHsKKyAgIHR5cGVzZXQgLWduIHJl Zj1SRVNFVAorIH0KKyB0eXBlc2V0IC1wIHJlZgorMDpyZXNldCBnbG9iYWwgcmVmZXJlbmNlIHdp dGhpbiBmdW5jdGlvbgorPnR5cGVzZXQgLW4gcmVmPVJFU0VUCisKKyB1bnNldCAtbiByZWYKKyB0 eXBlc2V0IC1ybiByZWY9Uk8KKyB0eXBlc2V0IC1wIHJlZgorICh0eXBlc2V0IC1uIHJlZj1SVykK KyBwcmludCBzdGF0dXM6ICQ/IGV4cGVjdGVkOiAxCisgdHlwZXNldCArciAtbiByZWYKKyB0eXBl c2V0IC1wIHJlZgorIHR5cGVzZXQgLXIgK24gcmVmCisgdHlwZXNldCAtcCByZWYKKyAodHlwZXNl dCAtcm4gcmVmKQorIHByaW50IHN0YXR1czogJD8gZXhwZWN0ZWQ6IDEKKyB0eXBlc2V0ICtyIC1u IHJlZj1SVwkjIEFzc2lnbm1lbnQgb2NjdXJzIGFmdGVyIHR5cGUgY2hhbmdlLAorIHR5cGVzZXQg LXAgcmVmIFJPCSMgc28gUk89UlcgaGVyZS4gIFBvdGVudGlhbGx5IGNvbmZ1c2luZy4KKyB0eXBl c2V0IC1yIC1uIHJlZj1SWAkjIE5vIHR5cGUgY2hhbmdlLCBzbyByZWZlcmVudCBjaGFuZ2VzIC4u LgorIHR5cGVzZXQgLXAgcmVmIFJPCSMgLi4uIGFuZCBwcmV2aW91cyByZWZlcmVyZW50IGRvZXMg bm90LgorIHR5cGVzZXQgK3JuIHJlZj1SVwkjIEhlcmUgcmVmPVJXLCBhZ2FpbiB0eXBlIGNoYW5n ZWQgZmlyc3QuCisgdHlwZXNldCAtcCByZWYKKzA6YWRkIGFuZCByZW1vdmUgcmVhZG9ubHkgYXR0 cmlidXRlIHdpdGggcmVmZXJlbmNlcworPnR5cGVzZXQgLXJuIHJlZj1STworKj8qOiByZWY6IHJl YWQtb25seSByZWZlcmVuY2UKKz5zdGF0dXM6IDEgZXhwZWN0ZWQ6IDEKKz50eXBlc2V0IC1uIHJl Zj1STworPnR5cGVzZXQgLXIgcmVmPVJPCisqPyo6IHJlZjogcmVhZC1vbmx5IHZhcmlhYmxlCis+ c3RhdHVzOiAxIGV4cGVjdGVkOiAxCis+dHlwZXNldCAtbiByZWY9Uk8KKz50eXBlc2V0IC1nIFJP PVJXCis+dHlwZXNldCAtcm4gcmVmPVJYCis+dHlwZXNldCAtZyBSTz1SVworPnR5cGVzZXQgcmVm PVJXCisKKyAoKSB7CisgIHR5cGVzZXQgLW4gcjEgcjI9CisgIHR5cGVzZXQgLXAgcjEgcjIKKyAg cHJpbnQgLS0gJHsoISlyMS11bnNldH0KKyAgcHJpbnQgLS0gJHsrcjF9CisgIHR5cGVzZXQgLXAg cjEKKyB9CiswOnVuc2V0IG5hbWVyZWYgcmVtYWlucyB1bnNldCB3aGVuIHJlc29sdmVkCitGOnJl bGllcyBvbiBnbG9iYWwgVFlQRVNFVF9UT19VTlNFVCBpbiAlcHJlcAorPnR5cGVzZXQgLW4gcjEK Kz50eXBlc2V0IC1uIHIyPScnCis+dW5zZXQKKz4wCis+dHlwZXNldCAtbiByMQorCisgYmFyPXh4 CisgdHlwZXNldCAtbiBmb289YmFyCisgKCkgeyB0eXBlc2V0IC1uIGZvbzsgZm9vPXp6OyBmb289 eno7IHByaW50ICRiYXIgJHp6IH0KKyAoKSB7IHR5cGVzZXQgLW4gZm9vOyBmb289eno7IGxvY2Fs IHp6OyBmb289eno7IHByaW50ICRiYXIgJHp6IH0KKzA6cmVncmVzc2lvbjogbG9jYWwgbmFtZXJl ZiBtYXkgbm90IGluLXNjb3BlIGEgZ2xvYmFsIHBhcmFtZXRlcgorRjpwcmV2aW91c2x5IHRoaXMg Y291bGQgY3JlYXRlIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBhbmQgY3Jhc2gKKz54eAorPnh4IHp6 CisKKyB0eXBlc2V0IC1ubSBmb289YmFyCisxOmNyZWF0ZSBuYW1lcmVmIGJ5IHBhdHRlcm4gbWF0 Y2ggbm90IGFsbG93ZWQKKyo/KnR5cGVzZXQ6MTogaW52YWxpZCByZWZlcmVuY2UKKwogJWNsZWFu Cg== --000000000000b732ee0600a33045--