This commit is contained in:
Martin Haye 2017-06-07 06:54:51 -07:00
commit b69be27f84
2 changed files with 9 additions and 6 deletions

View File

@ -234,16 +234,18 @@ t_token scan(void)
scanpos += 4;
}
}
else if (scanpos[0] == '\"')
else if ((scanpos[0] & 0x7F) == '\"') // Hack for string quote char in case we have to rewind later
{
char *scanshift;
char *scanshift, quotechar;
int scanoffset;
/*
* String constant.
*/
quotechar = scanpos[0];
*scanpos |= 0x80; // Set high bit in case of rewind
scantoken = STRING_TOKEN;
constval = (long)++scanpos;
while (*scanpos && *scanpos != '\"')
while (*scanpos && *scanpos != quotechar)
{
if (*scanpos == '\\')
{
@ -288,11 +290,12 @@ t_token scan(void)
}
scanpos++;
}
if (!*scanpos++)
if (!*scanpos)
{
parse_error("Unterminated string");
return (-1);
}
*scanpos++ |= 0x80; // Set high bit in case of rewind
}
else
{

View File

@ -510,7 +510,7 @@ t_opseq *parse_value(t_opseq *codeseq, int rvalue, int *stackdepth)
if (stackdepth)
*stackdepth = cfnvals;
cfnvals = 1;
type &= ~FUNC_TYPE;
type &= ~(FUNC_TYPE | VAR_TYPE);
}
else if (scantoken == OPEN_BRACKET_TOKEN)
{
@ -565,7 +565,7 @@ t_opseq *parse_value(t_opseq *codeseq, int rvalue, int *stackdepth)
*stackdepth = cfnvals;
type &= ~FUNC_TYPE;
}
else if (type & VAR_TYPE)
else if (type & (VAR_TYPE | PTR_TYPE))
{
/*
* Pointer dereference