From 1c583e006ee31933e5780ef9cfa0e0f7ddc833dd Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 13 Mar 2008 17:28:07 +0000 Subject: [PATCH] No longer segfault upon error at end of file --- src/parser.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/parser.c b/src/parser.c index 9e3c63c..392f13c 100644 --- a/src/parser.c +++ b/src/parser.c @@ -123,14 +123,16 @@ static int _parse_check(C99 * c99, TokenCode code) /* parse_error */ static int _parse_error(C99 * c99, char const * format, ...) - /* FIXME segfaults when EOF (c99->token is NULL) */ { Token * token = c99->token; va_list ap; - fprintf(stderr, "%s%s:%u, near \"%s\": error: ", PACKAGE ": ", - token_get_filename(token), token_get_line(token), - token_get_string(token)); + if(token == NULL) /* XXX not very elegant */ + fputs(PACKAGE ": near end of file: error: ", stderr); + else + fprintf(stderr, "%s%s:%u, near \"%s\": error: ", PACKAGE ": ", + token_get_filename(token), + token_get_line(token), token_get_string(token)); va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap);