]> Shamusworld >> Repos - rmac/blobdiff - procln.c
Fixed bug when expanding macros with comments that have @, \, etc.
[rmac] / procln.c
index 5860734511cdfef8025ce13cbde4f8e43c0ada36..2cd1bdc3d513b6b7476d33cea3c59b0e09f8b357 100644 (file)
--- a/procln.c
+++ b/procln.c
@@ -36,7 +36,6 @@ static IFENT * f_ifent;                       // Freelist of ifents
 static int disabled;                   // Assembly conditionally disabled
 int just_bss;                                  // 1, ds.b in microprocessor mode 
 VALUE pcloc;                                   // Value of "PC" at beginning of line 
-IFENT * ifent;                                 // Current ifent
 SYM * lab_sym;                                 // Label on line (or NULL)
 
 const char extra_stuff[] = "extra (unexpected) text found after addressing mode";
@@ -137,7 +136,7 @@ loop:                                                       // Line processing loop label
        // Get another line of tokens
        if (TokenizeLine() == TKEOF)
        {
-if (verb_flag) printf("Assemble: Found TKEOF flag...\n");
+if (debug) printf("Assemble: Found TKEOF flag...\n");
                if (list_flag && listflag)                      // Flush last line of source
                        listeol();
 
@@ -265,13 +264,13 @@ as68label:
                switch (state)
                {
                case MN_IF:
-                       d_if ();
+                       d_if();
                goto loop;
                case MN_ELSE:
                        d_else();
                        goto loop;
                case MN_ENDIF:
-                       d_endif ();
+                       d_endif();
                        goto loop;
                case MN_IIF:                                            // .iif --- immediate if
                        if (disabled || expr(exprbuf, &eval, &eattr, &esym) != OK)
@@ -661,6 +660,9 @@ When checking to see if it's already been equated, issue a warning.
                goto loop;
        }
 
+       // Keep a backup of chptr (used for optimisations during codegen)
+       chptr_opcode = chptr;
+
        for(;;)
        {
                if ((m->mnattr & siz) && (amsk0 & m->mn0) != 0 && (amsk1 & m->mn1) != 0)