script: fix parse_word()

With the `c > ' '` requirement we can't have an assertion for length in there.
This commit is contained in:
Přemysl Eric Janouch 2014-07-31 23:07:37 +02:00
parent 8fde2e72aa
commit 8ece6a4f64
1 changed files with 6 additions and 3 deletions

View File

@ -469,13 +469,16 @@ parse_word (struct tokenizer *self)
struct buffer buf = BUFFER_INITIALIZER;
char c;
// Here we accept almost anything that doesn't break the grammar...
// Here we accept almost anything that doesn't break the grammar
while (!strchr (" []\"", (c = *self->cursor++)) && (unsigned char) c > ' ')
buffer_append_c (&buf, c);
self->cursor--;
// ...so an empty word can only mean a bug within our caller.
assert (buf.len != 0);
if (!buf.len)
{
self->error = "invalid input";
return NULL;
}
struct item *item = new_word (buf.s, buf.len);
free (buf.s);