* histlexwords error with >! token
@ 2015-01-25 18:52 Mikael Magnusson
2015-01-25 19:59 ` Bart Schaefer
0 siblings, 1 reply; 5+ messages in thread
From: Mikael Magnusson @ 2015-01-25 18:52 UTC (permalink / raw)
To: zsh workers
Even though the code appears to specially handle it, I still get this error,
hist.c:3477: bad(1) wordsplit reading history: echo hello >! /dev/null
at: >! /dev/null
word: >|
The (1) indicates that it's the first bad that gets set, ie this one
if (!*wptr) {
/*
* End of the word before the end of the
* line: not good.
*/
bad = 1;
loop_next = 1;
break;
}
and just below that is
/*
* Oddity 2: !'s turn into |'s.
*/
if (*lptr == *wptr ||
(*lptr == '!' && *wptr == '|')) {
lptr++;
wptr++;
I have no idea why *wptr would be NULL here. Entries that say >|
instead of >! do not produce the error.
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: histlexwords error with >! token
2015-01-25 18:52 histlexwords error with >! token Mikael Magnusson
@ 2015-01-25 19:59 ` Bart Schaefer
2015-01-25 20:40 ` Mikael Magnusson
0 siblings, 1 reply; 5+ messages in thread
From: Bart Schaefer @ 2015-01-25 19:59 UTC (permalink / raw)
To: zsh workers
On Jan 25, 7:52pm, Mikael Magnusson wrote:
} Subject: histlexwords error with >! token
}
} Even though the code appears to specially handle it, I still get this error,
} hist.c:3477: bad(1) wordsplit reading history: echo hello >! /dev/null
} at: >! /dev/null
} word: >|
Try this:
diff --git a/Src/hist.c b/Src/hist.c
index 11d9722..87d0723 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -3452,7 +3452,8 @@ histsplitwords(char *lineptr, short **wordsp, int *nwordsp, int *nwordposp,
if (*lptr == *wptr ||
(*lptr == '!' && *wptr == '|')) {
lptr++;
- wptr++;
+ if (!*++wptr)
+ break;
} else if (lptr[0] == '\\' &&
lptr[1] == '\n') {
/*
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: histlexwords error with >! token
2015-01-25 19:59 ` Bart Schaefer
@ 2015-01-25 20:40 ` Mikael Magnusson
2015-01-25 21:15 ` Bart Schaefer
0 siblings, 1 reply; 5+ messages in thread
From: Mikael Magnusson @ 2015-01-25 20:40 UTC (permalink / raw)
To: Bart Schaefer; +Cc: zsh workers
On Sun, Jan 25, 2015 at 8:59 PM, Bart Schaefer
<schaefer@brasslantern.com> wrote:
> On Jan 25, 7:52pm, Mikael Magnusson wrote:
> } Subject: histlexwords error with >! token
> }
> } Even though the code appears to specially handle it, I still get this error,
> } hist.c:3477: bad(1) wordsplit reading history: echo hello >! /dev/null
> } at: >! /dev/null
> } word: >|
>
> Try this:
>
>
> diff --git a/Src/hist.c b/Src/hist.c
> index 11d9722..87d0723 100644
> --- a/Src/hist.c
> +++ b/Src/hist.c
> @@ -3452,7 +3452,8 @@ histsplitwords(char *lineptr, short **wordsp, int *nwordsp, int *nwordposp,
> if (*lptr == *wptr ||
> (*lptr == '!' && *wptr == '|')) {
> lptr++;
> - wptr++;
> + if (!*++wptr)
> + break;
> } else if (lptr[0] == '\\' &&
> lptr[1] == '\n') {
> /*
That appears to do the trick. I also tried recalling the words with
insert-last-word and copy-earlier-word and they show up as expected
even when they contain spaces, which wasn't the case before the patch.
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: histlexwords error with >! token
2015-01-25 20:40 ` Mikael Magnusson
@ 2015-01-25 21:15 ` Bart Schaefer
2015-01-25 21:32 ` Mikael Magnusson
0 siblings, 1 reply; 5+ messages in thread
From: Bart Schaefer @ 2015-01-25 21:15 UTC (permalink / raw)
To: zsh workers
On Jan 25, 9:40pm, Mikael Magnusson wrote:
}
} > - wptr++;
} > + if (!*++wptr)
} > + break;
}
} That appears to do the trick. I also tried recalling the words with
} insert-last-word and copy-earlier-word and they show up as expected
} even when they contain spaces, which wasn't the case before the patch.
Hm, that's a little strange (unless you mean this happens on lines that
also contain ">!") -- for the simple case of words containing a space,
the strpfx() call up at line 3407 should have done the trick in the
first place.
Nevertheless, I'll go ahead and push this for now.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: histlexwords error with >! token
2015-01-25 21:15 ` Bart Schaefer
@ 2015-01-25 21:32 ` Mikael Magnusson
0 siblings, 0 replies; 5+ messages in thread
From: Mikael Magnusson @ 2015-01-25 21:32 UTC (permalink / raw)
To: Bart Schaefer; +Cc: zsh workers
On Sun, Jan 25, 2015 at 10:15 PM, Bart Schaefer
<schaefer@brasslantern.com> wrote:
> On Jan 25, 9:40pm, Mikael Magnusson wrote:
> }
> } > - wptr++;
> } > + if (!*++wptr)
> } > + break;
> }
> } That appears to do the trick. I also tried recalling the words with
> } insert-last-word and copy-earlier-word and they show up as expected
> } even when they contain spaces, which wasn't the case before the patch.
>
> Hm, that's a little strange (unless you mean this happens on lines that
> also contain ">!") -- for the simple case of words containing a space,
> the strpfx() call up at line 3407 should have done the trick in the
> first place.
>
> Nevertheless, I'll go ahead and push this for now.
Yes, I'm talking about a line that has >! on it. Without the patch,
recalling words gives you 'foo\' and 'bar' separately instead of a
single 'foo\ bar'. What I meant by pointing that out in the first
place is that stuff is actually working, we didn't just suppress an
error message :).
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-01-25 21:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-25 18:52 histlexwords error with >! token Mikael Magnusson
2015-01-25 19:59 ` Bart Schaefer
2015-01-25 20:40 ` Mikael Magnusson
2015-01-25 21:15 ` Bart Schaefer
2015-01-25 21:32 ` Mikael Magnusson
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).