From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22570 invoked by alias); 14 Dec 2017 10:02:04 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 42122 Received: (qmail 25559 invoked by uid 1010); 14 Dec 2017 10:02:04 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.11):SA:0(-6.9/5.0):. Processed in 12.256522 secs); 14 Dec 2017 10:02:04 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, SPF_HELO_PASS,SPF_PASS,T_DKIM_INVALID,T_RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20171214100147euoutp015833905d7380757eb7f140482e5d1379~AIPQQp01D3004830048euoutp01I DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1513245707; bh=qw9PyazesinwLhWOI394EydH0zwzUS2TOomV25nJXHo=; h=Date:From:To:Subject:In-reply-to:References:From; b=BKoJdm1V4vYDE6Gyh0y1bz2uyNqSbuSqeSHSQP/eP/7xOb085o7V5PWt9iIknJrpC VRZqsDv0ksKOwo2ykNkR9PKuK/X+tzQG7TZYiRaYBjZ+xQfeaS9cqqYVI/sqoIGbya eTGnuCpkGO+6rM59IZUaKXM1Mg7ys1qM61Vs4lvM= X-AuditID: cbfec7f2-f793b6d000003243-d7-5a324c0a37c7 Date: Thu, 14 Dec 2017 10:01:42 +0000 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: [BUG] Strange auto-load behaviour when function name contains hyphen Message-id: <20171214100142.27516153@pwslap01u.europe.root.pri> In-reply-to: <990A7EB2-C4BA-4E3D-99B3-7DA40846CBD1@dana.is> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLIsWRmVeSWpSXmKPExsWy7djPc7pcPkZRBmfbRCwONj9kcmD0WHXw A1MAYxSXTUpqTmZZapG+XQJXxqo/p1kLlvNWbPu+mqWB8TdnFyMnh4SAicSTo/fYIWwxiQv3 1rOB2EICSxklfr4y62LkArJ7mSTOv1nPDNPw5/gGJoiiZUBFe2UhiqYxSTw8sp0FwtnEKPF+ 5Rw2COcso8TTxQuAdnBwsAioShx7XQDSzSZgKDF102xGEFtEQFzi7NrzLCC2sECwxJqeVWBx XgF7iYb3j8E2cwpYS7w/9Q5sM7+AvsTVv5+YIC6yl5h55QxUvaDEj8n3wOYwC+hIbNv2mB3C lpfYvOYtM8g9EgJz2CTmnpvPBtHsIrFt0VVGCFtY4tXxLdCwkJG4PLmbBcLuZ5R40u0L0TyD UeL0mR1QzdYSfbcvMkJs4JOYtG06M8iTEgK8Eh1tQhAlHhL71zRAzXSUOL9lGiMkUPoYJV7v u8Y4gVFhFpLDZyE5fBaSwxcwMq9iFEktLc5NTy021itOzC0uzUvXS87P3cQITASn/x3/tIPx 6wmrQ4wCHIxKPLwbdA2jhFgTy4orcw8xSnAwK4nwqk0ECvGmJFZWpRblxxeV5qQWH2KU5mBR Eue1jWqLFBJITyxJzU5NLUgtgskycXBKNTCeubuzYsUtkcq2yX/scq7Y7WS6uy1L89jRyebH Xfz1Nd6InGBMFvVs9vl99vq/Dbd0DKWN+KoW267c9eRfBmtI7xRG349SVXETTz/M7/2esG7/ 15NW9vZSzvZ/fZMiNc7d2R0UZeQaaDhtY1mgobbw/eU6olZfDM2NOOe7vku4+i9H2579tKcS S3FGoqEWc1FxIgAZ/oYIAAMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrALMWRmVeSWpSXmKPExsVy+t/xa7qcPkZRBtu3mlgcbH7I5MDoserg B6YAxigum5TUnMyy1CJ9uwSujFV/TrMWLOet2PZ9NUsD42/OLkZODgkBE4k/xzcwQdhiEhfu rWfrYuTiEBJYwijR29vPBOHMYJJYMHMaVGYTo8SiE9+gnLOMEiuPfWTsYuTgYBFQlTj2ugBk FJuAocTUTbMZQWwRAXGJs2vPs4DYwgLBEmt6VoHFeQXsJRreP2YGsTkFrCXen3oHtW0Co8S1 9YdYQRL8AvoSV/9+grrPXmLmlTNQzYISPybfAxvKLKAlsXlbEyuELS+xec1bsKFCAuoSN+7u Zp/AKDwLScssJC2zkLQsYGRexSiSWlqcm55bbKRXnJhbXJqXrpecn7uJERjO24793LKDsetd 8CFGAQ5GJR7eDbqGUUKsiWXFlbmHGCU4mJVEeNUmAoV4UxIrq1KL8uOLSnNSiw8xSnOwKInz 9u5ZHSkkkJ5YkpqdmlqQWgSTZeLglGpgNPpavfl2TbqMs6eKo+XyadUxCw+suFPfXyiwL/HS xbjVlfNltlzp4bhxX8w1ZUG7S9X8Yrv1DAyxIot7Kgz8jrXOXOo4eVXTHtcbws798ma5ofKJ X3c+y35bNaP76N7ek2yLDp+5Oq1H6pjrQ0vTWBb77HmB0noL1n9ekbzbYGPgAl2TFqN5SizF GYmGWsxFxYkAWsKStGMCAAA= X-CMS-MailID: 20171214100145eucas1p1ac6af4dd25c1fe52eb4ddc7aae8c045f X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20171214064805epcas2p196a185a6c3c5e66640833d8dfa15d593 X-RootMTR: 20171214064805epcas2p196a185a6c3c5e66640833d8dfa15d593 References: <990A7EB2-C4BA-4E3D-99B3-7DA40846CBD1@dana.is> On Thu, 14 Dec 2017 00:46:29 -0600 dana wrote: > The documentation states that function files intended for zsh-style > auto-loading are allowed to contain a 'simple definition' (`foo() { > ... }`) if that's the only thing in the file. This seems to work > fine... except when the function name contains a hyphen. A while back we had to turn "-" into a token to fix a compatibility issue with pattern matching in POSIX shells. This has caused problems to come out of the wardrobe ever since. ("Woodwork" implies a level of solid material without the appropriate magical connotations.) This has got line offsets including the function line numbering change as it currently stands but I won't commit that. pws diff --git a/Src/exec.c b/Src/exec.c index fc6d02d..5149349 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -5932,6 +5934,7 @@ stripkshdef(Eprog prog, char *name) { Wordcode pc; wordcode code; + char *ptr1, *ptr2; if (!prog) return NULL; @@ -5942,8 +5945,23 @@ stripkshdef(Eprog prog, char *name) return prog; pc++; code = *pc++; - if (wc_code(code) != WC_FUNCDEF || - *pc != 1 || strcmp(name, ecrawstr(prog, pc + 1, NULL))) + if (wc_code(code) != WC_FUNCDEF || *pc != 1) + return prog; + + /* + * See if name of function requested (name) is same as + * name of function in word code. name may still have "-" + * tokenised. + */ + ptr1 = name; + ptr2 = ecrawstr(prog, pc + 1, NULL); + while (*ptr1 && *ptr2) { + if (*ptr1 != *ptr2 && *ptr1 != Dash && *ptr1 != '-') + break; + ptr1++; + ptr2++; + } + if (*ptr1 || *ptr2) return prog; {