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.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 29098 invoked from network); 16 Nov 2022 14:40:42 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 16 Nov 2022 14:40:42 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1668609642; b=ayJw9kYqGZCoE8zfiwgb1EzorI8SoOxORBLuaurqAhYy1KSrKnGGdCzjHLS/WtMc6C31eNo3hn LB19KRQKf9+zy4cT5Be0y2v3uT2rfE/mUhLXHKqUN+2SI6DI4dRG80MEX3DY1/N+9w9sfeneFk WTWOExe1tcejd6BKGCW3dV3w98DjKOhomloFFXByU+bYLMm25viO/HSqjANbVFrBupIgcpUbyD qsrMgDbNrHoGxlXfUkq+TeKHl3FPw1/BxSW+uxo528p133qL4FepW6jr/BEluZSrR1WaAU6Agc Kw1PcN2elw9n7d63DlOGXjlo9uON7kLXBmeQ7DxQzoQy2g==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-vs1-f48.google.com) smtp.remote-ip=209.85.217.48; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1668609642; bh=y05pzeQ6Zb4lPZCfRSpKAn2+q1oPaFxQqUI4K0UaT/E=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=F82y3+1hKuWjpUH6hQB2Gx4lfcGlP3f88lA1a38ZNy+RXIxBvO79vnfqW+rRMgLzwm59Oqb2rY BJFLdhG2zXHZQEqx83SVFK4GpnxarTcFFw1QJ5BacRQyW6VPjISuz7i+H/dHZ9K46m06i+L3m+ BVZOJlFV0z8aNX6H/7kJ6LzDCtD9Qb7CZe+IYw1fMlKXZ2w7J0gQGBOA10eRL+Y6/N8fNhDjml phURBL0I3HXt9E8ICu7NEfo+2VYVPvTUDDMHJjt+hdHxw99A2eHjkGMTB2ptF9wObV8PLjq2FB 8Y3dz6fM5mfwYZVn29b8qZBRmBvJpbqZ/rGvJFLLO9F0qQ==; 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:Cc:To:Subject:Message-ID :Date:From:MIME-Version:Reply-To: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=0grFxtcoEP5RsqLst+SytCKKUagVYM/BcJtOtatShD0=; b=iyDEPaIvzfeWEblgcmC+2yu+6P WaECKNE70VpwtZwkoCFIHFV8mob85XlS0pl8/Unn7G0SAMNJEq/T7yqQ5pfb2bJblg1lZBw0xAUn0 xXNxXZJZyLPxwnNQagaA58Rhg80n/6PPlj6OOHqJoZpye1LsZZYmzV2NzU58YQinGS2qB41eA7KnC ps3tpIzCdbPSx11Wl9DiVAhL8olZz9ooCQDWpBJcfRRyC6lvld9MJ5ARIePukLXRJE2B2FJn7ydCR EWjyfxjR0h7CPy+cHIiNS44c4RotEd58wzYAskwfy3EkRGvOG1P+MHxgU5RpWqr3iYCxbLIuuKmHR 0CBb4uEA==; Received: by zero.zsh.org with local id 1ovJak-000Esh-5U; Wed, 16 Nov 2022 14:40:42 +0000 Authentication-Results: zsh.org; iprev=pass (mail-vs1-f48.google.com) smtp.remote-ip=209.85.217.48; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-vs1-f48.google.com ([209.85.217.48]:42836) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1ovJaT-000EVw-8F; Wed, 16 Nov 2022 14:40:25 +0000 Received: by mail-vs1-f48.google.com with SMTP id t14so18102523vsr.9; Wed, 16 Nov 2022 06:40:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=0grFxtcoEP5RsqLst+SytCKKUagVYM/BcJtOtatShD0=; b=gMex4fiNF0oW9O+9X7NHlbpYXMUaLDwoWlpFEbIS+ouKybHMlJiM6CXtZnKtiMnXbd xyOAoXYSZTgSV4XyW2m1VqdBX6sxgiiMwio6Vv+OHYaPwg5gxTK5t3dke01c0bNmQqyI 2GG3Rk2kysnKLxSaoCzblUfWOCwFN5lqPpz3B7wmZaRNF4WbwQD2IB5vAitX8axdSqdx vcTE1fVmfwO6Lkv+/U5QtreMtR3k7Ukusv1u3LV+VVv985dF0j924tq2NuZdWxLyxhXe poAf6+zE5eMs+4sTxJSjKsZ6vIyDwVMEDGkiOdEAoL4T9tBKx9ain+49QU2caGhLJEXG cMrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0grFxtcoEP5RsqLst+SytCKKUagVYM/BcJtOtatShD0=; b=qrzReciaVBveC7yz5rrzhhxAL9piIasNOclidkl6bjaGmaxtcfa1RXc9nJgjNTXyd5 kZTDueeAhp3KYYGzOXZFTSLTy1qby1Vme3VyINm2nsWE1tp6GNgTFXodWBLWChQerxoa N+6JyiShwtDHfCd5L5r8tVce6UbcAGCzWZh4Tj1qiY/u8HBsUg+1W3USHk+OrBiEVidp dfNHaek1nrQdvk743wbqAzl1XzsGY/28JawYzMF8DMc4RRNzMwvS3hvP+m9GOlx3vakp P1/gvXnJU2SiAWEZbbyonPuoUEcC03u5ISr4koIndukykK//Mm47np2Zvgeu2quOoxNC PpMA== X-Gm-Message-State: ANoB5pkLScIvrnXWhwpgJ71xWYyWcwfW2wVLJ3pbBWYwFolj9kDGsWTQ ODXjHpYRlUB2lmblsgRhb982XeD3tPs3/6L7Ht95Hm9CUpY= X-Google-Smtp-Source: AA0mqf4domK0BTXcjdhUNDXmJH79mcbJuTtoWnG+EMs2uuTLqcfmoX9d3AkYwexaRBRdSvxjhHp+/aUbKE2xQ6QN0IU= X-Received: by 2002:a05:6102:22f4:b0:3ad:24a7:63fa with SMTP id b20-20020a05610222f400b003ad24a763famr10720304vsh.51.1668609623863; Wed, 16 Nov 2022 06:40:23 -0800 (PST) MIME-Version: 1.0 From: Philippe Altherr Date: Wed, 16 Nov 2022 15:40:12 +0100 Message-ID: Subject: [PATCH] Fix ERR_EXIT behavior in function calls and "always" statements To: Zsh hackers list Cc: Bart Schaefer , =?UTF-8?Q?Lawrence_Vel=C3=A1zquez?= Content-Type: multipart/mixed; boundary="000000000000e6840b05ed9773b3" X-Seq: 50980 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: --000000000000e6840b05ed9773b3 Content-Type: multipart/alternative; boundary="000000000000e6840805ed9773b1" --000000000000e6840805ed9773b1 Content-Type: text/plain; charset="UTF-8" The attached patch fixes the ERR_EXIT behavior in function calls and "always" statements. The patch does the following: - Revert the following patches, which are based on an unfortunate misunderstanding of the expected behavior of ERR_EXIT: - 50929: fix handling of ERR_RETURN bent by 50928. - 50928: fix tests for 50897, mention behavior change in NEWS - I kept the localoptions fix in one of the tests. - 50897: nonzero status of complex commands should trigger ERR_EXIT - Add saving and restoring of local_noerrexit in doshfunc in exec.c - This fixes the ERR_EXIT behavior in function calls. - Add "this_noerrexit = 1;" at the very end of exectry in loop.c - This makes "always" statements compliant with the exception 3 of the POSIX specification of "set -e". - Add new tests in C03traps.ztst Philippe --000000000000e6840805ed9773b1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The attached patch fixes the ERR_EXIT behavior in function= calls and "always" statements. The patch does the following:
  • Add= =C2=A0"this_noerrexit =3D 1;" at the very end of exectry in loop.= c
    • This makes "always" statements compliant with the e= xception 3 of the POSIX specification of "set -e".
  • A= dd new tests in=C2=A0C03traps.ztst
  • Philippe
    <= br>
    --000000000000e6840805ed9773b1-- --000000000000e6840b05ed9773b3 Content-Type: text/plain; charset="US-ASCII"; name="fix-err-exit-behavior-in-function-calls-and-always-statements.txt" Content-Disposition: attachment; filename="fix-err-exit-behavior-in-function-calls-and-always-statements.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lajqzora0 ZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IDljMjgxNjliYi4uY2RhZmQxZmY1IDEwMDY0 NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTQsMTUgKzQsNiBAQCBDSEFOR0VTIEZST00gUFJF VklPVVMgVkVSU0lPTlMgT0YgWlNICiAKIE5vdGUgYWxzbyB0aGUgbGlzdCBvZiBpbmNvbXBhdGli aWxpdGllcyBpbiB0aGUgUkVBRE1FIGZpbGUuCiAKLUNoYW5nZXMgc2luY2UgNS45Ci0tLS0tLS0t LS0tLS0tLS0tLQotCi1IYW5kbGluZyBvZiBFUlJfRVhJVCBpcyBjb3JyZWN0ZWQgd2hlbiB0aGUg ZmluYWwgc3RhdHVzIG9mIGEgc3RydWN0dXJlZAotY29tbWFuZCAoZm9yLCBzZWxlY3QsIHdoaWxl LCByZXBlYXQsIGlmLCBjYXNlLCBvciBhIGxpc3QgaW4gYnJhY2VzKSBpcwotbm9uemVyby4gIFRv IGJlIGNvbXBhdGlibGUgd2l0aCBvdGhlciBzaGVsbHMsICJ6c2ggLWUiIG5vdyBleGl0cyBpbgot dGhvc2UgY2lyY3Vtc3RhbmNlcywgd2hlcmVhcyBwcmV2aW91cyB2ZXJzaW9ucyBkaWQgbm90LiAg VGhpcyBkb2VzIG5vdAotYWZmZWN0IHRoZSBoYW5kbGluZyBvZiBub256ZXJvIHN0YXR1cyB3aXRo aW4gY29uZGl0aW9uYWwgc3RhdGVtZW50cy4KLQogQ2hhbmdlcyBzaW5jZSA1LjguMQogLS0tLS0t LS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9TcmMvZXhlYy5jIGIvU3JjL2V4ZWMuYwppbmRl eCBjZTBjMWYxYWQuLmI5MDYxZTNhNCAxMDA2NDQKLS0tIGEvU3JjL2V4ZWMuYworKysgYi9TcmMv ZXhlYy5jCkBAIC00OSw3ICs0OSw4IEBAIHN0cnVjdCBmdW5jc2F2ZSB7CiAgICAgaW50IHpvcHRp bmQsIGxhc3R2YWwsIG9wdGNpbmQsIG51bXBpcGVzdGF0czsKICAgICBpbnQgKnBpcGVzdGF0czsK ICAgICBjaGFyICpzY3JpcHRuYW1lOwotICAgIGludCBicmVha3MsIGNvbnRmbGFnLCBsb29wcywg ZW11bGF0aW9uLCBub2VycmV4aXQsIG9mbGFncywgcmVzdG9yZV9zdGlja3k7CisgICAgaW50IGJy ZWFrcywgY29udGZsYWcsIGxvb3BzLCBlbXVsYXRpb24sIG5vZXJyZXhpdCwgdGhpc19ub2VycmV4 aXQsIG9mbGFnczsKKyAgICBpbnQgcmVzdG9yZV9zdGlja3k7CiAgICAgRW11bGF0aW9uX29wdGlv bnMgc3RpY2t5OwogICAgIHN0cnVjdCBmdW5jc3RhY2sgZnN0YWNrOwogfTsKQEAgLTQ1MSw3ICs0 NTIsNyBAQCBleGVjY3Vyc2goRXN0YXRlIHN0YXRlLCBpbnQgZG9fZXhlYykKICAgICBjbWRwb3Ao KTsKIAogICAgIHN0YXRlLT5wYyA9IGVuZDsKLSAgICB0aGlzX25vZXJyZXhpdCA9IChXQ19TVUJM SVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElTVF9FTkQpOworICAgIHRoaXNfbm9lcnJleGl0ID0g MTsKIAogICAgIHJldHVybiBsYXN0dmFsOwogfQpAQCAtMTQ0Miw4ICsxNDQzLDYgQEAgZXhlY2xp c3QoRXN0YXRlIHN0YXRlLCBpbnQgZG9udF9jaGFuZ2Vfam9iLCBpbnQgZXhpdGluZykKIAkJICAg IGV4ZWNzaW1wbGUoc3RhdGUpOwogCQllbHNlCiAJCSAgICBleGVjcGxpbmUoc3RhdGUsIGNvZGUs IGx0eXBlLCAobHR5cGUgJiBaX0VORCkgJiYgZXhpdGluZyk7Ci0JCWlmICghbG9jYWxsZXZlbCB8 fCB1bnNldChFUlJSRVRVUk4pKQotCQkgICAgdGhpc19ub2VycmV4aXQgPSBub2VycmV4aXQ7CiAJ CXN0YXRlLT5wYyA9IG5leHQ7CiAJCWdvdG8gc3VibGlzdF9kb25lOwogCQlicmVhazsKQEAgLTU3 NjMsNiArNTc2Miw3IEBAIGRvc2hmdW5jKFNoZnVuYyBzaGZ1bmMsIExpbmtMaXN0IGRvc2hhcmdz LCBpbnQgbm9yZXR1cm52YWwpCiAJZnVuY3NhdmUtPnBpcGVzdGF0cyA9IE5VTEw7CiAJZnVuY3Nh dmUtPm51bXBpcGVzdGF0cyA9IG51bXBpcGVzdGF0czsKIAlmdW5jc2F2ZS0+bm9lcnJleGl0ID0g bm9lcnJleGl0OworCWZ1bmNzYXZlLT50aGlzX25vZXJyZXhpdCA9IHRoaXNfbm9lcnJleGl0Owog CWlmICh0cmFwX3N0YXRlID09IFRSQVBfU1RBVEVfUFJJTUVEKQogCSAgICB0cmFwX3JldHVybi0t OwogCS8qCkBAIC02MDA5LDYgKzYwMDksNyBAQCBkb3NoZnVuYyhTaGZ1bmMgc2hmdW5jLCBMaW5r TGlzdCBkb3NoYXJncywgaW50IG5vcmV0dXJudmFsKQogCSAgICB0cmFwX3JldHVybisrOwogCXJl dCA9IGxhc3R2YWw7CiAJbm9lcnJleGl0ID0gZnVuY3NhdmUtPm5vZXJyZXhpdDsKKwl0aGlzX25v ZXJyZXhpdCA9IGZ1bmNzYXZlLT50aGlzX25vZXJyZXhpdDsKIAlpZiAobm9yZXR1cm52YWwpIHsK IAkgICAgbGFzdHZhbCA9IGZ1bmNzYXZlLT5sYXN0dmFsOwogCSAgICBudW1waXBlc3RhdHMgPSBm dW5jc2F2ZS0+bnVtcGlwZXN0YXRzOwpkaWZmIC0tZ2l0IGEvU3JjL2xvb3AuYyBiL1NyYy9sb29w LmMKaW5kZXggYmU1MjYxMzY5Li43YzNlMDRiOGEgMTAwNjQ0Ci0tLSBhL1NyYy9sb29wLmMKKysr IGIvU3JjL2xvb3AuYwpAQCAtMjA4LDcgKzIwOCw3IEBAIGV4ZWNmb3IoRXN0YXRlIHN0YXRlLCBp bnQgZG9fZXhlYykKICAgICBsb29wcy0tOwogICAgIHNpbXBsZV9wbGluZSA9IG9sZF9zaW1wbGVf cGxpbmU7CiAgICAgc3RhdGUtPnBjID0gZW5kOwotICAgIHRoaXNfbm9lcnJleGl0ID0gKFdDX1NV QkxJU1RfVFlQRSgqZW5kKSAhPSBXQ19TVUJMSVNUX0VORCk7CisgICAgdGhpc19ub2VycmV4aXQg PSAxOwogICAgIHJldHVybiBsYXN0dmFsOwogfQogCkBAIC0zMzYsNyArMzM2LDcgQEAgZXhlY3Nl bGVjdChFc3RhdGUgc3RhdGUsIFVOVVNFRChpbnQgZG9fZXhlYykpCiAgICAgbG9vcHMtLTsKICAg ICBzaW1wbGVfcGxpbmUgPSBvbGRfc2ltcGxlX3BsaW5lOwogICAgIHN0YXRlLT5wYyA9IGVuZDsK LSAgICB0aGlzX25vZXJyZXhpdCA9IChXQ19TVUJMSVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElT VF9FTkQpOworICAgIHRoaXNfbm9lcnJleGl0ID0gMTsKICAgICByZXR1cm4gbGFzdHZhbDsKIH0K IApAQCAtNDc4LDcgKzQ3OCw3IEBAIGV4ZWN3aGlsZShFc3RhdGUgc3RhdGUsIFVOVVNFRChpbnQg ZG9fZXhlYykpCiAgICAgcG9waGVhcCgpOwogICAgIGxvb3BzLS07CiAgICAgc3RhdGUtPnBjID0g ZW5kOwotICAgIHRoaXNfbm9lcnJleGl0ID0gKFdDX1NVQkxJU1RfVFlQRSgqZW5kKSAhPSBXQ19T VUJMSVNUX0VORCk7CisgICAgdGhpc19ub2VycmV4aXQgPSAxOwogICAgIHJldHVybiBsYXN0dmFs OwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgZXhlY3JlcGVhdChFc3RhdGUgc3RhdGUsIFVOVVNF RChpbnQgZG9fZXhlYykpCiAgICAgbG9vcHMtLTsKICAgICBzaW1wbGVfcGxpbmUgPSBvbGRfc2lt cGxlX3BsaW5lOwogICAgIHN0YXRlLT5wYyA9IGVuZDsKLSAgICB0aGlzX25vZXJyZXhpdCA9IChX Q19TVUJMSVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElTVF9FTkQpOworICAgIHRoaXNfbm9lcnJl eGl0ID0gMTsKICAgICByZXR1cm4gbGFzdHZhbDsKIH0KIApAQCAtNTg3LDcgKzU4Nyw3IEBAIGV4 ZWNpZihFc3RhdGUgc3RhdGUsIGludCBkb19leGVjKQogCSAgICBsYXN0dmFsID0gMDsKICAgICB9 CiAgICAgc3RhdGUtPnBjID0gZW5kOwotICAgIHRoaXNfbm9lcnJleGl0ID0gKFdDX1NVQkxJU1Rf VFlQRSgqZW5kKSAhPSBXQ19TVUJMSVNUX0VORCk7CisgICAgdGhpc19ub2VycmV4aXQgPSAxOwog CiAgICAgcmV0dXJuIGxhc3R2YWw7CiB9CkBAIC03MDEsNyArNzAxLDcgQEAgZXhlY2Nhc2UoRXN0 YXRlIHN0YXRlLCBpbnQgZG9fZXhlYykKIAogICAgIGlmICghYW55cGF0b2spCiAJbGFzdHZhbCA9 IDA7Ci0gICAgdGhpc19ub2VycmV4aXQgPSAoV0NfU1VCTElTVF9UWVBFKCplbmQpICE9IFdDX1NV QkxJU1RfRU5EKTsKKyAgICB0aGlzX25vZXJyZXhpdCA9IDE7CiAKICAgICByZXR1cm4gbGFzdHZh bDsKIH0KQEAgLTc5Myw2ICs3OTMsNyBAQCBleGVjdHJ5KEVzdGF0ZSBzdGF0ZSwgaW50IGRvX2V4 ZWMpCiAgICAgY21kcG9wKCk7CiAgICAgcG9waGVhcCgpOwogICAgIHN0YXRlLT5wYyA9IGVuZDsK KyAgICB0aGlzX25vZXJyZXhpdCA9IDE7CiAKICAgICByZXR1cm4gZW5kdmFsOwogfQpkaWZmIC0t Z2l0IGEvVGVzdC9DMDN0cmFwcy56dHN0IGIvVGVzdC9DMDN0cmFwcy56dHN0CmluZGV4IDVjYzQ1 ZTJkZS4uMDFkOGZhMjViIDEwMDY0NAotLS0gYS9UZXN0L0MwM3RyYXBzLnp0c3QKKysrIGIvVGVz dC9DMDN0cmFwcy56dHN0CkBAIC03MjEsMjEgKzcyMSw0MCBAQCBGOk11c3QgYmUgdGVzdGVkIHdp dGggYSB0b3AtbGV2ZWwgc2NyaXB0IHJhdGhlciB0aGFuIHNvdXJjZSBvciBmdW5jdGlvbgogPkdv b2QKIAogICAoc2V0b3B0IGVycl9leGl0Ci0gIGZvciB4IGluIHk7IGRvCisgIGZhbHNlICYmIHRy dWUKKyAgcHJpbnQgT0sKKyAgKQorMDpFUlJfRVhJVCBub3QgdHJpZ2dlcmVkIGJ5ICJmYWxzZSAm JiB0cnVlIgorPk9LCisKKyAgKHNldG9wdCBlcnJfZXhpdAorICBmbigpIHsKICAgICBmYWxzZSAm JiB0cnVlCi0gIGRvbmUKKyAgfQorICBmbgogICBwcmludCBPSwogICApCi0xOkVSUl9FWElUIHRy aWdnZXJlZCBieSBzdGF0dXMgMSBhdCBlbmQgb2YgZm9yCisxOkVSUl9FWElUIG5vdCB0cmlnZ2Vy ZWQgYnkgImZhbHNlICYmIHRydWUiIGJ1dCBieSByZXR1cm4gZnJvbSBmbgogCiAgIChzZXRvcHQg ZXJyX2V4aXQKLSAgaW50ZWdlciB4PTAKLSAgd2hpbGUgKCggISB4KysgKSk7IGRvCisgIGZvciB4 IGluIHk7IGRvCiAgICAgZmFsc2UgJiYgdHJ1ZQogICBkb25lCiAgIHByaW50IE9LCiAgICkKLTE6 RVJSX0VYSVQgdHJpZ2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiB3aGlsZQorMDpFUlJfRVhJ VCBub3QgdHJpZ2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiBmb3IKKz5PSworCisgIChzZXRv cHQgZXJyX2V4aXQKKyAgZm4oKSB7CisgICAgZm9yIHggaW4geTsgZG8KKyAgICAgIGZhbHNlICYm IHRydWUKKyAgICBkb25lCisgIH0KKyAgZm4KKyAgcHJpbnQgT0sKKyAgKQorMTpFUlJfRVhJVCBu b3QgdHJpZ2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiBmb3IgYnV0IGJ5IHJldHVybiBmcm9t IGZuCiAKICAgKHNldG9wdCBlcnJfZXhpdAogICByZXBlYXQgMTsgZG8KQEAgLTc0Myw3ICs3NjIs MTkgQEAgRjpNdXN0IGJlIHRlc3RlZCB3aXRoIGEgdG9wLWxldmVsIHNjcmlwdCByYXRoZXIgdGhh biBzb3VyY2Ugb3IgZnVuY3Rpb24KICAgZG9uZQogICBwcmludCBPSwogICApCi0xOkVSUl9FWElU IHRyaWdnZXJlZCBieSBzdGF0dXMgMSBhdCBlbmQgb2YgcmVwZWF0CiswOkVSUl9FWElUIG5vdCB0 cmlnZ2VyZWQgYnkgc3RhdHVzIDEgYXQgZW5kIG9mIHJlcGVhdAorPk9LCisKKyAgKHNldG9wdCBl cnJfZXhpdAorICBmbigpIHsKKyAgICByZXBlYXQgMTsgZG8KKyAgICAgIGZhbHNlICYmIHRydWUK KyAgICBkb25lCisgIH0KKyAgZm4KKyAgcHJpbnQgT0sKKyAgKQorMTpFUlJfRVhJVCBub3QgdHJp Z2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiByZXBlYXQgYnV0IGJ5IHJldHVybiBmcm9tIGZu CiAKICAgKHNldG9wdCBlcnJfZXhpdAogICBpZiB0cnVlOyB0aGVuCkBAIC03NTEsMTUgKzc4Miw5 MyBAQCBGOk11c3QgYmUgdGVzdGVkIHdpdGggYSB0b3AtbGV2ZWwgc2NyaXB0IHJhdGhlciB0aGFu IHNvdXJjZSBvciBmdW5jdGlvbgogICBmaQogICBwcmludCBPSwogICApCi0xOkVSUl9FWElUIHRy aWdnZXJlZCBieSBzdGF0dXMgMSBhdCBlbmQgb2YgaWYKKzA6RVJSX0VYSVQgbm90IHRyaWdnZXJl ZCBieSBzdGF0dXMgMSBhdCBlbmQgb2YgaWYKKz5PSworCisgIChzZXRvcHQgZXJyX2V4aXQKKyAg Zm4oKSB7CisgICAgaWYgdHJ1ZTsgdGhlbgorICAgICAgZmFsc2UgJiYgdHJ1ZQorICAgIGZpCisg IH0KKyAgZm4KKyAgcHJpbnQgT0sKKyAgKQorMTpFUlJfRVhJVCBub3QgdHJpZ2dlcmVkIGJ5IHN0 YXR1cyAxIGF0IGVuZCBvZiBpZiBidXQgYnkgcmV0dXJuIGZyb20gZm4KKworICAoc2V0b3B0IGVy cl9leGl0CisgIGxvb3A9dHJ1ZQorICB3aGlsZSBwcmludCBDT05EOyAkbG9vcDsgZG8KKyAgICBs b29wPWZhbHNlCisgICAgZmFsc2UgJiYgdHJ1ZQorICBkb25lCisgIHByaW50IE9LCisgICkKKzA6 RVJSX0VYSVQgbm90IHRyaWdnZXJlZCBieSBzdGF0dXMgMSBhdCBlbmQgb2Ygd2hpbGUKKz5DT05E Cis+Q09ORAorPk9LCisKKyAgKHNldG9wdCBlcnJfZXhpdAorICBmbigpIHsKKyAgICBsb29wPXRy dWUKKyAgICB3aGlsZSBwcmludCBDT05EOyAkbG9vcDsgZG8KKyAgICAgIGxvb3A9ZmFsc2UKKyAg ICAgIGZhbHNlICYmIHRydWUKKyAgICBkb25lCisgIH0KKyAgZm4KKyAgcHJpbnQgT0sKKyAgKQor MTpFUlJfRVhJVCBub3QgdHJpZ2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiB3aGlsZSBidXQg YnkgcmV0dXJuIGZyb20gZm4KKz5DT05ECis+Q09ORAogCiAgIChzZXRvcHQgZXJyX2V4aXQKICAg ewogICAgIGZhbHNlICYmIHRydWUKKyAgfSBhbHdheXMgeworICAgIHByaW50IEFMV0FZUwogICB9 CiAgIHByaW50IE9LCiAgICkKLTE6RVJSX0VYSVQgdHJpZ2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVu ZCBvZiB7IH0KKzA6RVJSX0VYSVQgbm90IHRyaWdnZXJlZCBieSBzdGF0dXMgMSBhdCBlbmQgb2Yg YWx3YXlzCis+QUxXQVlTCis+T0sKKworICAoc2V0b3B0IGVycl9leGl0CisgIGZuKCkgeworICAg IHsKKyAgICAgIGZhbHNlICYmIHRydWUKKyAgICB9IGFsd2F5cyB7CisgICAgICBwcmludCBBTFdB WVMKKyAgICB9CisgIH0KKyAgZm4KKyAgcHJpbnQgT0sKKyAgKQorMTpFUlJfRVhJVCBub3QgdHJp Z2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiBhbHdheXMgYnV0IGJ5IHJldHVybiBmcm9tIGZu Cis+QUxXQVlTCisKKyAgKHNldG9wdCBlcnJfZXhpdAorICB7CisgICAgZmFsc2UgJiYgdHJ1ZQor ICB9CisgIHByaW50IE9LCisgICkKKzA6RVJSX0VYSVQgbm90IHRyaWdnZXJlZCBieSBzdGF0dXMg MSBhdCBlbmQgb2YgeyB9Cis+T0sKKworICAoc2V0b3B0IGVycl9leGl0CisgIGZuKCkgeworICAg IHsKKyAgICAgIGZhbHNlICYmIHRydWUKKyAgICB9CisgIH0KKyAgZm4KKyAgcHJpbnQgT0sKKyAg KQorMTpFUlJfRVhJVCBub3QgdHJpZ2dlcmVkIGJ5IHN0YXR1cyAxIGF0IGVuZCBvZiB7IH0gYnV0 IGJ5IHJldHVybiBmcm9tIGZuCiAKICAgdW5zZXRvcHQgZXJyX2V4aXQgZXJyX3JldHVybgogICAo c2V0b3B0IGVycl9leGl0Cg== --000000000000e6840b05ed9773b3--