summaryrefslogtreecommitdiff
path: root/giscanner/scannerlexer.l
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2008-09-06 22:12:14 +0000
committerJohan Dahlin <johan@src.gnome.org>2008-09-06 22:12:14 +0000
commit20551760ac22a5de2cf0e6b08d95c44e60364932 (patch)
tree062f39e8858f14c2ef42ce3e3bfbe2e12e20d269 /giscanner/scannerlexer.l
parentd82eb4296db7f7de6a1f15f1ab71d5d168a69c7b (diff)
downloadgobject-introspection-20551760ac22a5de2cf0e6b08d95c44e60364932.tar.gz
Bug 551162 – giscanner does not recognize asm and __asm__ Patch by Jani
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
Diffstat (limited to 'giscanner/scannerlexer.l')
-rw-r--r--giscanner/scannerlexer.l13
1 files changed, 3 insertions, 10 deletions
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l
index 45a47ab1..0f41637c 100644
--- a/giscanner/scannerlexer.l
+++ b/giscanner/scannerlexer.l
@@ -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)
@@ -428,10 +430,6 @@ parse_ignored_macro (void)
;
if (c != '(')
return FALSE;
- while ((c = input ()) != EOF && isspace (c))
- ;
- if (c != '(')
- return FALSE;
nest = 0;
while ((c = input ()) != EOF && (nest > 0 || c != ')')) {
@@ -457,10 +455,5 @@ parse_ignored_macro (void)
lineno++;
}
- while ((c = input ()) != EOF && isspace (c))
- ;
- if (c != ')')
- return FALSE;
-
return TRUE;
}