diff options
author | Jan de Groot <jgc@archlinux.org> | 2016-10-20 12:14:19 +0000 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2017-09-10 09:35:44 +0200 |
commit | cf04292691625e8abcd8cc8af9436809f273e5a0 (patch) | |
tree | 391c1cd614bd71e5d06ab1846e6bb9f12f960066 /giscanner/scannerlexer.l | |
parent | f22ad3e4f09a1ada9b8887235c8cb8822a03e88f (diff) | |
download | gobject-introspection-cf04292691625e8abcd8cc8af9436809f273e5a0.tar.gz |
giscanner: fix EOF check with flex >= 2.6.1
It looks like flex 2.6.1 changed [1] the return code for EOF in
yyinput. Therefore, use the right value depending on the version of
flex which generates the lexer.
[1] https://github.com/westes/flex/commit/f863c9490e6912ffcaeb12965fb3a567a10745ff
https://bugzilla.gnome.org/show_bug.cgi?id=773272
Diffstat (limited to 'giscanner/scannerlexer.l')
-rw-r--r-- | giscanner/scannerlexer.l | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l index 61c0a92d..7dbab5c8 100644 --- a/giscanner/scannerlexer.l +++ b/giscanner/scannerlexer.l @@ -59,6 +59,15 @@ static void process_linemarks (GISourceScanner *scanner, gboolean has_line); static int check_identifier (GISourceScanner *scanner, const char *); static int parse_ignored_macro (void); static void print_error (GISourceScanner *scanner); + +#if (YY_FLEX_MAJOR_VERSION > 2) \ + || ((YY_FLEX_MAJOR_VERSION == 2) && (YY_FLEX_MINOR_VERSION > 6)) \ + || ((YY_FLEX_MAJOR_VERSION == 2) && (YY_FLEX_MINOR_VERSION == 6) && (YY_FLEX_SUBMINOR_VERSION >= 1)) +#define IS_EOF 0 +#else +#define IS_EOF EOF +#endif + %} %option nounput @@ -273,7 +282,7 @@ parse_comment (GISourceScanner *scanner) c1 = input(); c2 = input(); - if (c2 != EOF && (c1 == '*' && c2 != '*' && c2 != '/')) { + if (c2 != IS_EOF && (c1 == '*' && c2 != '*' && c2 != '/')) { /* * Store GTK-Doc comment blocks, * starts with one '/' followed by exactly two '*' and not followed by a '/' @@ -286,7 +295,7 @@ parse_comment (GISourceScanner *scanner) comment_lineno = lineno; - while (c2 != EOF && !(c1 == '*' && c2 == '/')) + while (c2 != IS_EOF && !(c1 == '*' && c2 == '/')) { if (!skip) g_string_append_c (string, c1); @@ -314,7 +323,7 @@ parse_comment (GISourceScanner *scanner) /* * Ignore all other comment blocks */ - while (c2 != EOF && !(c1 == '*' && c2 == '/')) + while (c2 != IS_EOF && !(c1 == '*' && c2 == '/')) { if (c1 == '\n') lineno++; @@ -439,19 +448,19 @@ parse_ignored_macro (void) int c; int nest; - while ((c = input ()) != EOF && isspace (c)) + while ((c = input ()) != IS_EOF && isspace (c)) ; if (c != '(') return FALSE; nest = 0; - while ((c = input ()) != EOF && (nest > 0 || c != ')')) { + while ((c = input ()) != IS_EOF && (nest > 0 || c != ')')) { if (c == '(') nest++; else if (c == ')') nest--; else if (c == '"') { - while ((c = input ()) != EOF && c != '"') { + while ((c = input ()) != IS_EOF && c != '"') { if (c == '\\') c = input (); } |