preproc.c: warn/ignore when attempting to %un[i]macro an active macro
authorKeith Kanios <keith@kanios.net>
Sat, 18 Dec 2010 18:17:31 +0000 (12:17 -0600)
committerKeith Kanios <keith@kanios.net>
Sat, 18 Dec 2010 18:17:31 +0000 (12:17 -0600)
preproc.c

index 97c80465f35c6df625f0aefe76f1294f02c01a52..b87e292fe019c239feaf4f69a7ac36c66249c440 100644 (file)
--- a/preproc.c
+++ b/preproc.c
@@ -2980,8 +2980,14 @@ issue_error:
                 ed->nparam_min == spec.nparam_min &&
                 ed->nparam_max == spec.nparam_max &&
                 ed->plus == spec.plus) {
-                *ed_p = ed->next;
-                free_expdef(ed);
+                if (ed->cur_depth > 0) {
+                    error(ERR_NONFATAL, "`%s' ignored due to active macro",
+                          pp_directives[i]);
+                    break;
+                } else {
+                    *ed_p = ed->next;
+                    free_expdef(ed);
+                }
             } else {
                 ed_p = &ed->next;
             }