diff options
-rw-r--r-- | preproc.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -3449,13 +3449,14 @@ issue_error: len = nasm_unquote(t->text, NULL); - /* check the values provided, on error -- empty string */ + /* make start and count being in range */ + if (start < 0) + start = 0; if (count < 0) count = len + count + 1 - start; if (start + count > (int64_t)len) - start = -1; - - if (!len || count < 0 || start < 0) + count = len - start; + if (!len || count < 0 || start >=(int64_t)len) start = -1, count = 0; /* empty string */ macro_start = nasm_malloc(sizeof(*macro_start)); |