summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Kanios <keith@kanios.net>2009-07-11 14:48:09 -0500
committerKeith Kanios <keith@kanios.net>2009-07-11 14:48:09 -0500
commit093513d0bc2658d5387150ca15d21461de3adbc0 (patch)
tree2fe7221c91e8717688146a6738bb64913c0f60ca
parent0af5ee2732450b6c48f8e9ec18c3feba29d4fe6a (diff)
downloadnasm-093513d0bc2658d5387150ca15d21461de3adbc0.tar.gz
preproc: refine appropriate handling of PP_RMACRO/PP_RIMACRO/PP_MACRO/PP_IMACRO
-rw-r--r--preproc.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/preproc.c b/preproc.c
index 6946de8a..9fcebfa4 100644
--- a/preproc.c
+++ b/preproc.c
@@ -2042,7 +2042,6 @@ static int do_directive(Token * tline)
int64_t count;
size_t len;
int severity;
- bool is_recursive = false;
origline = tline;
@@ -2592,18 +2591,18 @@ static int do_directive(Token * tline)
case PP_RMACRO:
case PP_RIMACRO:
- is_recursive = true;
case PP_MACRO:
case PP_IMACRO:
if (defining) {
error(ERR_FATAL,
"`%%%smacro': already defining a macro",
(i == PP_IMACRO ? "i" : ""));
+ /* todo: change the above as well... */
return DIRECTIVE_FOUND;
}
- defining = nasm_malloc(sizeof(MMacro));
- defining->max_depth = (is_recursive ? 65536 : 0); /* remove/change this??? */
- defining->casesense = (i == PP_MACRO);
+ defining = nasm_malloc(sizeof(MMacro));
+ defining->max_depth = (((i == PP_RMACRO) || (i == PP_RIMACRO)) ? 65536 : 0);
+ defining->casesense = ((i == PP_MACRO) || (i == PP_RMACRO));
if (!parse_mmacro_spec(tline, defining, pp_directives[i])) {
nasm_free(defining);
defining = NULL;