Fix read past end of buffer after call to TokenMatch

IsSpaceOrNewLine returns true on end of input (NUL character). But if
TokenMatch considers a token at end of input to match it sets "in" to
one past end of buffer. This will lead to reading past the end of
buffer on any subsequent operation.
pull/484/head
Turo Lamminen 2015-03-02 13:52:19 +02:00
parent 7d3d66936b
commit c342778f42
1 changed files with 5 additions and 0 deletions

View File

@ -201,7 +201,12 @@ template <class char_t>
AI_FORCE_INLINE bool TokenMatch(char_t*& in, const char* token, unsigned int len)
{
if (!::strncmp(token,in,len) && IsSpaceOrNewLine(in[len])) {
if (in[len] != '\0') {
in += len+1;
} else {
// If EOF after the token make sure we don't go past end of buffer
in += len;
}
return true;
}