summaryrefslogtreecommitdiff
path: root/preproc.c
diff options
context:
space:
mode:
Diffstat (limited to 'preproc.c')
-rw-r--r--preproc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/preproc.c b/preproc.c
index c6349922..70e550d0 100644
--- a/preproc.c
+++ b/preproc.c
@@ -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));