diff options
author | Daniel Stone <daniel@fooishbar.org> | 2012-11-01 16:37:03 +1100 |
---|---|---|
committer | Daniel Stone <daniel@fooishbar.org> | 2012-11-01 16:37:03 +1100 |
commit | a68c5b7b29eb1433b1be73b50c4248e10eab8e64 (patch) | |
tree | a02314bd93b42d550e30a1eac435a3a0180322c3 /xkbscan.c | |
parent | e119cbec7e750ffc4d4bd08b577db2c697035a30 (diff) |
Reset scan state when opening a new file
When we opened a new file after encountering a parse error, we weren't
resetting our scan state, and continued to read out of the old buffer
rather than that of the new file.
Fixes a regression introduced in 9887842e ('Use fread() instead of
getc()').
Test case:
xkbcomp -lfhlpR "path/to/xkeyboard-config.git/symbols/*"
The Makefiles in that tree would cause parse errors, the resulting directory
file is incomplete (down from ~12000 to ~230 lines).
Reported-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Diffstat (limited to 'xkbscan.c')
-rw-r--r-- | xkbscan.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -37,7 +37,7 @@ unsigned int scanDebug; -FILE *yyin = NULL; +static FILE *yyin; static char scanFileBuf[1024] = {0}; char *scanFile = scanFileBuf; @@ -269,6 +269,14 @@ tokText(int tok) } #endif +void +scan_set_file(FILE *file) +{ + readBufLen = 0; + readBufPos = 0; + yyin = file; +} + static int scanchar(void) { |