* Re: Augmenting a Sticky Emulation Mode [not found] ` <CA+zrezS4X+=rkp42WWqcYC3eFZL95DgPHmKkGaEJj+R6ZB2BNg@mail.gmail.com> @ 2013-04-29 18:11 ` Bart Schaefer 2013-04-29 18:47 ` Bart Schaefer 0 siblings, 1 reply; 4+ messages in thread From: Bart Schaefer @ 2013-04-29 18:11 UTC (permalink / raw) To: Russell Harmon, zsh-workers [Re-routing to -workers] On Apr 29, 10:59am, Russell Harmon wrote: } } I'm also seeing the same odd behavior (but not the crash) on Fedora's build } of ZSH: zsh 5.0.2 (x86_64-redhat-linux-gnu) Hmm, this may be a real bug. I don't see exactly this with a fresh build on MacOS, but I do see something a little funny. schaefer<501> emulate -R sh -o noshglob -c 'foo() { setopt; }'; foo interactive longlistjobs monitor shinstdin zle ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Augmenting a Sticky Emulation Mode 2013-04-29 18:11 ` Augmenting a Sticky Emulation Mode Bart Schaefer @ 2013-04-29 18:47 ` Bart Schaefer 2013-04-29 21:17 ` Bart Schaefer 0 siblings, 1 reply; 4+ messages in thread From: Bart Schaefer @ 2013-04-29 18:47 UTC (permalink / raw) To: Russell Harmon, zsh-workers On Apr 29, 11:11am, Bart Schaefer wrote: } Subject: Re: Augmenting a Sticky Emulation Mode } } [Re-routing to -workers] } } Hmm, this may be a real bug. I don't see exactly this with a fresh } build on MacOS, but I do see something a little funny. OK, I found the problem, but I don't know what to do to fix it. It's the "no" prefix. macadamia<506> emulate -R sh -o noshglob -c 'foo() { setopt; }'; foo interactive longlistjobs monitor shinstdin macadamia<509> emulate -R sh +o shglob -c 'foo() { setopt; }'; foo interactive monitor noshglob shinstdin The -o option to emulate doesn't know how to invert an option when the "no" is put in front of it, and ends up treating it as the positive of something else, probably garbage in the data structure. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Augmenting a Sticky Emulation Mode 2013-04-29 18:47 ` Bart Schaefer @ 2013-04-29 21:17 ` Bart Schaefer 2013-04-30 5:34 ` Russell Harmon 0 siblings, 1 reply; 4+ messages in thread From: Bart Schaefer @ 2013-04-29 21:17 UTC (permalink / raw) To: Russell Harmon, zsh-workers 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Augmenting a Sticky Emulation Mode 2013-04-29 21:17 ` Bart Schaefer @ 2013-04-30 5:34 ` Russell Harmon 0 siblings, 0 replies; 4+ messages in thread From: Russell Harmon @ 2013-04-30 5:34 UTC (permalink / raw) To: Bart Schaefer; +Cc: zsh-workers [-- Attachment #1: Type: text/plain, Size: 1955 bytes --] It seems as though my crash is also related to this bug. According to the docs, BRACE_EXPAND is an alias for NO_IGNORE_BRACES. emulate -R sh +o ignorebraces -c 'foo() { setopt; }' works and doesn't crash the shell -- Russell Harmon On Mon, Apr 29, 2013 at 2:17 PM, Bart Schaefer <schaefer@brasslantern.com>wrote: > 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 > ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-04-30 5:35 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CA+zrezRfVDfTHYMMj2HpeyrUJvyuTQ=p+PL0tV6u3hcZ1nOfAw@mail.gmail.com> [not found] ` <130426180127.ZM18989@torch.brasslantern.com> [not found] ` <CA+zrezROkjsD5mum5TCZ02h5Z+MTWiHC59cyuAyt1J0xpgUG+g@mail.gmail.com> [not found] ` <CA+zrezTCVO58URokScwT45VHa_MkgpvnEuNbvzB+Uk97+WpQRQ@mail.gmail.com> [not found] ` <20130429094700.6c8db4a9@pwslap01u.europe.root.pri> [not found] ` <CA+zrezT4Xn6sUPciVd=6m2M=gfTavnA8MzcjL11AzxmAGUfowA@mail.gmail.com> [not found] ` <CA+zrezS4X+=rkp42WWqcYC3eFZL95DgPHmKkGaEJj+R6ZB2BNg@mail.gmail.com> 2013-04-29 18:11 ` Augmenting a Sticky Emulation Mode Bart Schaefer 2013-04-29 18:47 ` Bart Schaefer 2013-04-29 21:17 ` Bart Schaefer 2013-04-30 5:34 ` Russell Harmon
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).