diff options
Diffstat (limited to 'src/lj_lex.c')
-rw-r--r-- | src/lj_lex.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lj_lex.c b/src/lj_lex.c index 1d063f8f..ecfcc015 100644 --- a/src/lj_lex.c +++ b/src/lj_lex.c | |||
@@ -49,6 +49,10 @@ static int fillbuf(LexState *ls) | |||
49 | size_t sz; | 49 | size_t sz; |
50 | const char *buf = ls->rfunc(ls->L, ls->rdata, &sz); | 50 | const char *buf = ls->rfunc(ls->L, ls->rdata, &sz); |
51 | if (buf == NULL || sz == 0) return END_OF_STREAM; | 51 | if (buf == NULL || sz == 0) return END_OF_STREAM; |
52 | if (sz >= LJ_MAX_MEM) { | ||
53 | if (sz != ~(size_t)0) lj_err_mem(ls->L); | ||
54 | ls->endmark = 1; | ||
55 | } | ||
52 | ls->n = (MSize)sz - 1; | 56 | ls->n = (MSize)sz - 1; |
53 | ls->p = buf; | 57 | ls->p = buf; |
54 | return char2int(*(ls->p++)); | 58 | return char2int(*(ls->p++)); |
@@ -382,6 +386,7 @@ int lj_lex_setup(lua_State *L, LexState *ls) | |||
382 | ls->lookahead = TK_eof; /* No look-ahead token. */ | 386 | ls->lookahead = TK_eof; /* No look-ahead token. */ |
383 | ls->linenumber = 1; | 387 | ls->linenumber = 1; |
384 | ls->lastline = 1; | 388 | ls->lastline = 1; |
389 | ls->endmark = 0; | ||
385 | lj_str_resizebuf(ls->L, &ls->sb, LJ_MIN_SBUF); | 390 | lj_str_resizebuf(ls->L, &ls->sb, LJ_MIN_SBUF); |
386 | next(ls); /* Read-ahead first char. */ | 391 | next(ls); /* Read-ahead first char. */ |
387 | if (ls->current == 0xef && ls->n >= 2 && char2int(ls->p[0]) == 0xbb && | 392 | if (ls->current == 0xef && ls->n >= 2 && char2int(ls->p[0]) == 0xbb && |