From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 598 invoked by alias); 29 Apr 2013 21:17:34 -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: X-Seq: 31361 Received: (qmail 18584 invoked from network); 29 Apr 2013 21:17:28 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <130429141717.ZM16337@torch.brasslantern.com> Date: Mon, 29 Apr 2013 14:17:17 -0700 In-reply-to: <130429114756.ZM16140@torch.brasslantern.com> Comments: In reply to Bart Schaefer "Re: Augmenting a Sticky Emulation Mode" (Apr 29, 11:47am) References: <130426180127.ZM18989@torch.brasslantern.com> <20130429094700.6c8db4a9@pwslap01u.europe.root.pri> <130429111141.ZM16086@torch.brasslantern.com> <130429114756.ZM16140@torch.brasslantern.com> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: Russell Harmon , zsh-workers@zsh.org Subject: Re: Augmenting a Sticky Emulation Mode MIME-version: 1.0 Content-type: text/plain; charset=us-ascii On Apr 29, 11:47am, Bart Schaefer wrote: } } OK, I found the problem, but I don't know what to do to fix it. This seems to do it. diff --git a/Src/init.c b/Src/init.c index 8467a73..49ac124 100644 --- a/Src/init.c +++ b/Src/init.c @@ -281,9 +281,10 @@ parseargs(char **argv, char **runscript) /**/ static void -parseopts_insert(LinkList optlist, void *ptr) +parseopts_insert(LinkList optlist, void *base, int optno) { LinkNode node; + void *ptr = base + (optno < 0 ? -optno : optno); for (node = firstnode(optlist); node; incnode(node)) { if (ptr < getdata(node)) { @@ -390,7 +391,7 @@ parseopts(char *nam, char ***argvp, char *new_opts, char **cmdp, if (dosetopt(optno, action, !nam, new_opts) && nam) { WARN_OPTION("can't change option: %s", *argv); } else if (optlist) { - parseopts_insert(optlist, new_opts+optno); + parseopts_insert(optlist, new_opts, optno); } } break; @@ -415,7 +416,7 @@ parseopts(char *nam, char ***argvp, char *new_opts, char **cmdp, if (dosetopt(optno, action, !nam, new_opts) && nam) { WARN_OPTION("can't change option: -%c", **argv); } else if (optlist) { - parseopts_insert(optlist, new_opts+optno); + parseopts_insert(optlist, new_opts, optno); } } } -- Barton E. Schaefer