diff options
author | H. Peter Anvin <hpa@zytor.com> | 2019-10-07 21:19:32 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2019-10-07 21:25:18 -0700 |
commit | d983b6223304fb9bca16c20df0d5349605f25541 (patch) | |
tree | d850ce64674ddfb525bf51db78d9f55b1c04c330 /asm | |
parent | 58bd8e66443f6f489337723bba2fcc1f2b6e48a1 (diff) | |
download | nasm-d983b6223304fb9bca16c20df0d5349605f25541.tar.gz |
preproc: make %exitrep do what it is supposed to
%exitrep should should stop emitting code immediately, not just
terminate the loop when we hit %endrep. There is a bunch of hacky code
that special-cases that using istk->in_progress == 0.
The handling of the tail of %exitrep, %include and non-emitting
conditionals using entirely different mechanisms is just dumb. They
need to be unified.
Link: https://bugzilla.nasm.us/show_bug.cgi?id=3392612
Reported-by: Jason Hood <jadoxa@yahoo.com.au>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'asm')
-rw-r--r-- | asm/preproc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/asm/preproc.c b/asm/preproc.c index 790cf73c..3ee36c10 100644 --- a/asm/preproc.c +++ b/asm/preproc.c @@ -3986,7 +3986,7 @@ issue_error: break; if (l) - l->finishes->in_progress = 1; + l->finishes->in_progress = 0; else nasm_nonfatal("`%%exitrep' not within `%%rep' block"); break; |