]> git.sur5r.net Git - cc65/blobdiff - src/cc65/preproc.c
Fixed problem with last change. Wide string constants were not handled
[cc65] / src / cc65 / preproc.c
index dda22ffd2544ad48afda6b9d2d82e5f0a63b54f1..1b13018bc3a623e5cf4fde505edb38df5f4f8f53 100644 (file)
@@ -6,7 +6,7 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2008, Ullrich von Bassewitz                                      */
+/* (C) 1998-2009, Ullrich von Bassewitz                                      */
 /*                Roemerstrasse 52                                           */
 /*                D-70794 Filderstadt                                        */
 /* EMail:         uz@cc65.org                                                */
@@ -446,7 +446,7 @@ static void ReadMacroArgs (MacroExp* E)
                }
 
                /* Check for end of macro param list */
-               if (CurC == ')') {
+               if (CurC == ')') {
                    NextChar ();
                    break;
                }
@@ -504,6 +504,7 @@ static void MacroArgSubst (MacroExp* E)
 
 
     /* Remember the current input and switch to the macro replacement. */
+    int OldIndex = SB_GetIndex (&E->M->Replacement);
     SB_Reset (&E->M->Replacement);
     OldSource = InitLine (&E->M->Replacement);
 
@@ -623,6 +624,7 @@ static void MacroArgSubst (MacroExp* E)
 
     /* Switch back the input */
     InitLine (OldSource);
+    SB_SetIndex (&E->M->Replacement, OldIndex);
 }
 
 
@@ -674,7 +676,10 @@ static void MacroCall (StrBuf* Target, Macro* M)
 static void ExpandMacro (StrBuf* Target, Macro* M)
 /* Expand a macro into Target */
 {
-    /* ### printf ("Expanding %s(%u)\n", M->Name, ++V); */
+#if 0
+    static unsigned V = 0;
+    printf ("Expanding %s(%u)\n", M->Name, ++V);
+#endif
 
     /* Check if this is a function like macro */
     if (M->ArgCount >= 0) {
@@ -713,7 +718,9 @@ static void ExpandMacro (StrBuf* Target, Macro* M)
         DoneMacroExp (&E);
 
     }
-    /* ### printf ("Done with %s(%u)\n", M->Name, V--); */
+#if 0
+    printf ("Done with %s(%u)\n", M->Name, V--);
+#endif
 }
 
 
@@ -829,8 +836,9 @@ static void DefineMacro (void)
     while (IsSpace (SB_LookAtLast (&M->Replacement))) {
         SB_Drop (&M->Replacement, 1);
     }
-
-    /* ### printf ("%s: <%.*s>\n", M->Name, SB_GetLen (&M->Replacement), SB_GetConstBuf (&M->Replacement)); */
+#if 0
+    printf ("%s: <%.*s>\n", M->Name, SB_GetLen (&M->Replacement), SB_GetConstBuf (&M->Replacement));
+#endif
 
     /* If we have an existing macro, check if the redefinition is identical.
      * Print a diagnostic if not.
@@ -1379,7 +1387,7 @@ void Preprocess (void)
 Done:
     if (Verbosity > 1 && SB_NotEmpty (Line)) {
         printf ("%s(%u): %.*s\n", GetCurrentFile (), GetCurrentLine (),
-                SB_GetLen (Line), SB_GetConstBuf (Line));
+                (int) SB_GetLen (Line), SB_GetConstBuf (Line));
     }
 }