From 9cc96ff20dac0d7d2c9091937395f85dc4fc8259 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Tue, 22 Jan 2019 11:05:31 +0200 Subject: Bugfix * src/main.c (main): Make sure preprocessor options are collected before parsing source files. --- src/main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 301de44..e67b3e0 100644 --- a/src/main.c +++ b/src/main.c @@ -783,12 +783,20 @@ main(int argc, char **argv) if (arglist) { struct linked_list_entry *p; - - for (p = arglist->head; p; p = p->next) { + /* First pass: collect options */ + for (p = linked_list_head(arglist); p; ) { + struct linked_list_entry *next = p->next; char *s = (char*)p->data; - if (s[0] == '-') + if (s[0] == '-') { pp_option(s); - else if (source(s) == 0) + linked_list_unlink(arglist, p); + } + p = next; + } + /* Second pass: collect sources */ + for (p = linked_list_head(arglist); p; p = p->next) { + char *s = (char*)p->data; + if (source(s) == 0) yyparse(); } } -- cgit v1.2.1