From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13478 invoked from network); 16 Sep 2004 20:18:29 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 16 Sep 2004 20:18:29 -0000 Received: (qmail 86058 invoked from network); 16 Sep 2004 20:18:16 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 16 Sep 2004 20:18:16 -0000 Received: (qmail 18209 invoked by alias); 16 Sep 2004 20:15:37 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 20378 Received: (qmail 18196 invoked from network); 16 Sep 2004 20:15:36 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 16 Sep 2004 20:15:36 -0000 Received: (qmail 81206 invoked from network); 16 Sep 2004 20:15:36 -0000 Received: from moutng.kundenserver.de (212.227.126.187) by a.mx.sunsite.dk with SMTP; 16 Sep 2004 20:15:35 -0000 Received: from [212.227.126.206] (helo=mrelayng.kundenserver.de) by moutng.kundenserver.de with esmtp (Exim 3.35 #1) id 1C82fH-0004o5-00 for zsh-workers@sunsite.dk; Thu, 16 Sep 2004 22:15:35 +0200 Received: from [84.135.49.74] (helo=buddha.localdomain.de) by mrelayng.kundenserver.de with asmtp (Exim 3.35 #1) id 1C82fG-0004mk-00 for zsh-workers@sunsite.dk; Thu, 16 Sep 2004 22:15:34 +0200 Date: Thu, 16 Sep 2004 22:15:35 +0200 From: "Matthias B." To: zsh-workers@sunsite.dk Subject: PATCH: incorrect tied param splitting/joining when imeta(separator) is true Message-Id: <20040916221535.707ff5fb@buddha.localdomain.de> In-Reply-To: <20040913202517.79418def@buddha.localdomain.de> References: <20040913202517.79418def@buddha.localdomain.de> X-Mailer: Sylpheed version 0.9.8claws (GTK+ 1.2.10; i586-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Thu__16_Sep_2004_22_15_35_+0200_UX7kkaNUET/TzW/w" X-Provags-ID: kundenserver.de abuse@kundenserver.de auth:95d11223a40b7ac6df081cef1fe1fef2 X-Spam-Checker-Version: SpamAssassin 2.63 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, hits=0.0 required=6.0 tests=none autolearn=no version=2.63 X-Spam-Hits: 0.0 This is a multi-part message in MIME format. --Multipart=_Thu__16_Sep_2004_22_15_35_+0200_UX7kkaNUET/TzW/w Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Since no one seemed to be interested in the NUL-separator bugs I've taken a look at the code myself and I've managed to locate the bugs. The function tiedarrsetfn() does not convert characters for which imeta() is true into separator strings properly. This means that the bug is not limited to NUL-characters but affects all characters for which imeta() is true (e.g. 0x83). There are also 2 bugs in zjoin(): 1. zjoin() doesn't put the NUL-terminator in the right place when delim is a meta-character. 2. zjoin() refuses to add 0-delimiters (although it does count them when computing the length). This behaviour does not seem to be used anywhere in zsh code AFAICS and even if it were, that would be a bug in the respective call. The attached patch fixes both problems and adds 2 regression tests to B02typeset.ztst (both tests are necessary, since 0 and 0x83 are treated differently in some places, so that one case could regress independent of the other). MSB --Multipart=_Thu__16_Sep_2004_22_15_35_+0200_UX7kkaNUET/TzW/w Content-Type: text/plain; name="zsh-4.2.1-split-join-with-meta-sep-fix.patch" Content-Disposition: attachment; filename="zsh-4.2.1-split-join-with-meta-sep-fix.patch" Content-Transfer-Encoding: base64 ZGlmZiAtciAtLXVuaWZpZWQ9MjMgenNoLTQuMi4xL1NyYy9wYXJhbXMuYyB6c2gtNC4yLjEtc3Bs aXQtam9pbi13aXRoLW1ldGEtc2VwLWZpeC9TcmMvcGFyYW1zLmMKLS0tIHpzaC00LjIuMS9TcmMv cGFyYW1zLmMJRnJpIEF1ZyAxMyAxMjoyMjo0NSAyMDA0CisrKyB6c2gtNC4yLjEtc3BsaXQtam9p bi13aXRoLW1ldGEtc2VwLWZpeC9TcmMvcGFyYW1zLmMJVGh1IFNlcCAxNiAxOTozNDo1OSAyMDA0 CkBAIC0yNjIzLDQ3ICsyNjIzLDQ3IEBACiB9CiAKIC8qKi8KIGNoYXIgKgogdGllZGFycmdldGZu KFBhcmFtIHBtKQogewogICAgIHN0cnVjdCB0aWVkZGF0YSAqZHB0ciA9IChzdHJ1Y3QgdGllZGRh dGEgKilwbS0+dS5kYXRhOwogICAgIHJldHVybiAqZHB0ci0+YXJycHRyID8gempvaW4oKmRwdHIt PmFycnB0ciwgZHB0ci0+am9pbmNoYXIsIDEpIDogIiI7CiB9CiAKIC8qKi8KIHZvaWQKIHRpZWRh cnJzZXRmbihQYXJhbSBwbSwgY2hhciAqeCkKIHsKICAgICBzdHJ1Y3QgdGllZGRhdGEgKmRwdHIg PSAoc3RydWN0IHRpZWRkYXRhICopcG0tPnUuZGF0YTsKIAogICAgIGlmICgqZHB0ci0+YXJycHRy KQogCWZyZWVhcnJheSgqZHB0ci0+YXJycHRyKTsKICAgICBpZiAoeCkgewogCWNoYXIgc2VwYnVm WzNdOwogCWlmIChpbWV0YShkcHRyLT5qb2luY2hhcikpCiAJewogCSAgICBzZXBidWZbMF0gPSBN ZXRhOwotCSAgICBzZXBidWZbMV0gPSBkcHRyLT5qb2luY2hhcjsKKwkgICAgc2VwYnVmWzFdID0g ZHB0ci0+am9pbmNoYXIgXiAzMjsKIAkgICAgc2VwYnVmWzJdID0gJ1wwJzsKIAl9CiAJZWxzZQog CXsKIAkgICAgc2VwYnVmWzBdID0gZHB0ci0+am9pbmNoYXI7CiAJICAgIHNlcGJ1ZlsxXSA9ICdc MCc7CiAJfQogCSpkcHRyLT5hcnJwdHIgPSBzZXBzcGxpdCh4LCBzZXBidWYsIDAsIDApOwogCWlm IChwbS0+ZmxhZ3MgJiBQTV9VTklRVUUpCiAJICAgIHVuaXFhcnJheSgqZHB0ci0+YXJycHRyKTsK ICAgICB9IGVsc2UKIAkqZHB0ci0+YXJycHRyID0gTlVMTDsKICAgICBpZiAocG0tPmVuYW1lKQog CWFycmZpeGVudihwbS0+bmFtLCAqZHB0ci0+YXJycHRyKTsKICAgICB6c2ZyZWUoeCk7CiB9CiAK IC8qKi8KIHZvaWQKIHRpZWRhcnJ1bnNldGZuKFBhcmFtIHBtLCBVTlVTRUQoaW50IGV4cCkpCiB7 CiAgICAgLyoKICAgICAgKiBTcGVjaWFsIHVuc2V0IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgYWxsb2Nh dGVkIGEgc3RydWN0IHRpZWRkYXRhCmRpZmYgLXIgLS11bmlmaWVkPTIzIHpzaC00LjIuMS9TcmMv dXRpbHMuYyB6c2gtNC4yLjEtc3BsaXQtam9pbi13aXRoLW1ldGEtc2VwLWZpeC9TcmMvdXRpbHMu YwotLS0genNoLTQuMi4xL1NyYy91dGlscy5jCUZyaSBBdWcgMTMgMTI6MjI6NDYgMjAwNAorKysg enNoLTQuMi4xLXNwbGl0LWpvaW4td2l0aC1tZXRhLXNlcC1maXgvU3JjL3V0aWxzLmMJVGh1IFNl cCAxNiAyMToyNTo1NiAyMDA0CkBAIC0xODUzLDU2ICsxODUzLDU0IEBACiAJfSBlbHNlIHsKIAkg ICAgaWYgKHp0cmZ0aW1lYnVmKCZidWZzaXplLCAxKSkKIAkJcmV0dXJuIDA7CiAJICAgICpidWYr KyA9ICpmbXQrKzsKIAl9CiAgICAgKmJ1ZiA9ICdcMCc7CiAgICAgcmV0dXJuIGJ1ZiAtIG9yaWdi dWY7CiB9CiAKIC8qKi8KIG1vZF9leHBvcnQgY2hhciAqCiB6am9pbihjaGFyICoqYXJyLCBpbnQg ZGVsaW0sIGludCBoZWFwKQogewogICAgIGludCBsZW4gPSAwOwogICAgIGNoYXIgKipzLCAqcmV0 LCAqcHRyOwogCiAgICAgZm9yIChzID0gYXJyOyAqczsgcysrKQogCWxlbiArPSBzdHJsZW4oKnMp ICsgMSArIChpbWV0YShkZWxpbSkgPyAxIDogMCk7CiAgICAgaWYgKCFsZW4pCiAJcmV0dXJuIGhl YXA/ICIiIDogenRyZHVwKCIiKTsKICAgICBwdHIgPSByZXQgPSAoaGVhcCA/IChjaGFyICopIGhj YWxsb2MobGVuKSA6IChjaGFyICopIHpzaGNhbGxvYyhsZW4pKTsKICAgICBmb3IgKHMgPSBhcnI7 ICpzOyBzKyspIHsKIAlzdHJ1Y3B5KCZwdHIsICpzKTsKLQlpZiAoZGVsaW0pIHsKIAkgICAgaWYg KGltZXRhKGRlbGltKSkgewogCQkqcHRyKysgPSBNZXRhOwogCQkqcHRyKysgPSBkZWxpbSBeIDMy OwogCSAgICB9CiAJICAgIGVsc2UKIAkJKnB0cisrID0gZGVsaW07Ci0JfQogICAgIH0KLSAgICBw dHJbLTFdID0gJ1wwJzsKKyAgICBwdHJbLTEgLSAoaW1ldGEoZGVsaW0pID8gMSA6IDApXSA9ICdc MCc7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLyogU3BsaXQgYSBzdHJpbmcgY29udGFpbmluZyBh IGNvbG9uIHNlcGFyYXRlZCBsaXN0ICoKICAqIG9mIGl0ZW1zIGludG8gYW4gYXJyYXkgb2Ygc3Ry aW5ncy4gICAgICAgICAgICAgICAqLwogCiAvKiovCiBjaGFyICoqCiBjb2xvbnNwbGl0KGNoYXIg KnMsIGludCB1bmlxKQogewogICAgIGludCBjdDsKICAgICBjaGFyICp0LCAqKnJldCwgKipwdHIs ICoqcDsKIAogICAgIGZvciAodCA9IHMsIGN0ID0gMDsgKnQ7IHQrKykgLyogY291bnQgbnVtYmVy IG9mIGNvbG9ucyAqLwogCWlmICgqdCA9PSAnOicpCiAJICAgIGN0Kys7CiAgICAgcHRyID0gcmV0 ID0gKGNoYXIgKiopIHphbGxvYyhzaXplb2YoY2hhciAqKikgKiAoY3QgKyAyKSk7CiAKICAgICB0 ID0gczsKICAgICBkbyB7CiAJcyA9IHQ7CiAgICAgICAgIC8qIG1vdmUgdCB0byBwb2ludCBhdCBu ZXh0IGNvbG9uICovCiAJZm9yICg7ICp0ICYmICp0ICE9ICc6JzsgdCsrKTsKZGlmZiAtciAtLXVu aWZpZWQ9MjMgenNoLTQuMi4xL1Rlc3QvQjAydHlwZXNldC56dHN0IHpzaC00LjIuMS1zcGxpdC1q b2luLXdpdGgtbWV0YS1zZXAtZml4L1Rlc3QvQjAydHlwZXNldC56dHN0Ci0tLSB6c2gtNC4yLjEv VGVzdC9CMDJ0eXBlc2V0Lnp0c3QJRnJpIEF1ZyAxMyAxMjoyMjo1NCAyMDA0CisrKyB6c2gtNC4y LjEtc3BsaXQtam9pbi13aXRoLW1ldGEtc2VwLWZpeC9UZXN0L0IwMnR5cGVzZXQuenRzdAlUaHUg U2VwIDE2IDIxOjU4OjQxIDIwMDQKQEAgLTE2Myw0NiArMTYzLDYxIEBACiA/KGV2YWwpOjM6IHJl YWQtb25seSB2YXJpYWJsZTogcgogCiAgdHlwZXNldCByPXN1Y2Nlc3MKICByZWFkb25seSByCiAg cHJpbnQgJHIKICByPWZhaWx1cmUKIDE6Q29udmVydCB0byByZWFkb25seQogPnN1Y2Nlc3MKID8o ZXZhbCk6NDogcmVhZC1vbmx5IHZhcmlhYmxlOiByCiAKICB0eXBlc2V0IC1nVSBhcnJheQogIHBy aW50ICRhcnJheQogMDpVbmlxdWlmaWVkIGFycmF5cyBhbmQgbm9uLWxvY2FsIHNjb3BlCiA+YSBy IHkKIAogIHR5cGVzZXQgLVQgU0NBTEFSPWw6bzpjOmE6bCBhcnJheQogIHByaW50ICRhcnJheQog IHR5cGVzZXQgLVUgU0NBTEFSCiAgcHJpbnQgJFNDQUxBUiAkYXJyYXkKIDA6VGllZCBwYXJhbWV0 ZXJzIGFuZCB1bmlxdWlmaWVkIGNvbG9uLWFycmF5cwogPmwgbyBjIGEgbAogPmw6bzpjOmEgbCBv IGMgYQogCisgdHlwZXNldCAtVCBTQ0FMQVI9JCdsXHg4M29ceDgzY1x4ODNhXHg4M2wnIGFycmF5 ICQnXHg4MycKKyBwcmludCAkYXJyYXkKKyB0eXBlc2V0IC1VIFNDQUxBUgorIHByaW50ICRTQ0FM QVIgJGFycmF5CiswOlRpZWQgcGFyYW1ldGVycyBhbmQgdW5pcXVpZmllZCBhcnJheXMgd2l0aCBt ZXRhLWNoYXJhY3RlciBhcyBzZXBhcmF0b3IKKz5sIG8gYyBhIGwKKz5sg2+DY4NhIGwgbyBjIGEK KworIHR5cGVzZXQgLVQgU0NBTEFSPSQnbFwwMDBvXDAwMGNcMDAwYVwwMDBsJyBhcnJheSAkJ1ww MDAnCisgdHlwZXNldCAtVSBTQ0FMQVIKKyBwcmludCAkYXJyYXkKKyBbWyAkU0NBTEFSID09ICQn bFwwMDBvXDAwMGNcMDAwYScgXV0KKzA6VGllZCBwYXJhbWV0ZXJzIGFuZCB1bmlxdWlmaWVkIGFy cmF5cyB3aXRoIE5VTC1jaGFyYWN0ZXIgYXMgc2VwYXJhdG9yCis+bCBvIGMgYQorCiAgdHlwZXNl dCAtVCBTQ0FMQVIgYXJyYXkKICB0eXBlc2V0ICtUIFNDQUxBUgogMTpVbnR5aW5nIGlzIHByb2hp Yml0ZWQKID8oZXZhbCk6dHlwZXNldDoyOiB1c2UgdW5zZXQgdG8gcmVtb3ZlIHRpZWQgdmFyaWFi bGVzCiAKICBPVVRFUj1vdXRlcgogIHNjb3BlMTMKICBwcmludCAkT1VURVIKIDA6RXhwb3J0IG9m IHRpZWQgcGFyYW1ldGVycwogPmk6bjpuOmU6cgogPm91dGVyCiAKICB0eXBlc2V0IC1UVSBNT1JF U1RVRkY9aGVyZS13ZS1nby1nby1hZ2FpbiBtb3Jlc3R1ZmYgJy0nCiAgcHJpbnQgLWwgJG1vcmVz dHVmZgogMDpUaWVkIGFycmF5cyB3aXRoIHNlcGFyYXRvciBzcGVjaWZpZWQKID5oZXJlCiA+d2UK ID5nbwogPmFnYWluCiAKICB0eXBlc2V0IC1UIFRISVMgd2lsbCBub3Qgd29yawogMTpUaWVkIGFy cmF5IHN5bnRheAogPyhldmFsKTp0eXBlc2V0OjE6IC1UIHJlcXVpcmVzIG5hbWVzIG9mIHNjYWxh ciBhbmQgYXJyYXkK --Multipart=_Thu__16_Sep_2004_22_15_35_+0200_UX7kkaNUET/TzW/w--