Bug 551162 – giscanner does not recognize asm and __asm__ Patch by Jani
authorJohan Dahlin <johan@gnome.org>
Sat, 6 Sep 2008 22:12:14 +0000 (22:12 +0000)
committerJohan Dahlin <johan@src.gnome.org>
Sat, 6 Sep 2008 22:12:14 +0000 (22:12 +0000)
2008-09-07  Johan Dahlin  <johan@gnome.org>

    Bug 551162 – giscanner does not recognize asm and __asm__
    * giscanner/scannerlexer.l:
    Patch by Jani Monoses.

svn path=/trunk/; revision=577

ChangeLog
giscanner/scannerlexer.l

index a2f6439f79e5e6696ab4077e857ac97473c50a1f..e84116ccb5dfaccb3f0ecffefd4204e3d1eb59b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-07  Johan Dahlin  <johan@gnome.org>
+
+       Bug 551162 – giscanner does not recognize asm and __asm__
+       * giscanner/scannerlexer.l:
+       Patch by Jani Monoses.
+
 2008-09-06  Colin Walters  <walters@verbum.org>
 
        * girepository/girnode.c: Allow gtype_name
index 45a47ab196522f6bde7481b045959508f492d7b0..0f41637c7b37aae7453f3784ebed5f5f365d5299 100644 (file)
@@ -127,6 +127,8 @@ stringtext                          ([^\"])|(\\.)
 
 [a-zA-Z_][a-zA-Z_0-9]*                 { if (scanner->macro_scan) return IDENTIFIER; else REJECT; }
 
+"asm"                                  { if (!parse_ignored_macro()) REJECT; }
+"__asm__"                              { if (!parse_ignored_macro()) REJECT; }
 "auto"                                 { return AUTO; }
 "_Bool"                                        { return BOOL; }
 "break"                                        { return BREAK; }
@@ -416,7 +418,7 @@ process_directive (GISourceScanner *scanner)
 
 /*
  * This parses a macro which is ignored, such as
- * __attribute__(x)
+ * __attribute__((x)) or __asm__ (x)
  */
 static int
 parse_ignored_macro (void)
@@ -424,10 +426,6 @@ parse_ignored_macro (void)
        int c;
        int nest;
 
-       while ((c = input ()) != EOF && isspace (c))
-               ;
-       if (c != '(')
-               return FALSE;
        while ((c = input ()) != EOF && isspace (c))
                ;
        if (c != '(')
@@ -457,10 +455,5 @@ parse_ignored_macro (void)
                        lineno++;
        }
 
-       while ((c = input ()) != EOF && isspace (c))
-               ;
-       if (c != ')')
-               return FALSE;
-
        return TRUE;
 }