lexical.c, avoid to read beyond end of `string'
This commit is contained in:
parent
f42b5b16c7
commit
cb75a749b8
|
|
@ -107,7 +107,13 @@ pwlist_echo(wordlist *wlist, char *name)
|
||||||
static int
|
static int
|
||||||
cp_readchar(char **string, FILE *fptr)
|
cp_readchar(char **string, FILE *fptr)
|
||||||
{
|
{
|
||||||
return (*string) ? *(*string)++ : input(fptr);
|
if (*string == NULL)
|
||||||
|
return input(fptr);
|
||||||
|
|
||||||
|
if (**string)
|
||||||
|
return *(*string)++;
|
||||||
|
else
|
||||||
|
return '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -143,12 +149,8 @@ nloop:
|
||||||
|
|
||||||
c = cp_readchar(&string, cp_inp_cur);
|
c = cp_readchar(&string, cp_inp_cur);
|
||||||
|
|
||||||
if (string) {
|
if (string && (c == ESCAPE))
|
||||||
if (c == '\0')
|
c = '[';
|
||||||
c = '\n';
|
|
||||||
if (c == ESCAPE)
|
|
||||||
c = '[';
|
|
||||||
}
|
|
||||||
|
|
||||||
gotchar:
|
gotchar:
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue