version 1.166, 2022/05/20 21:18:55 |
version 1.167, 2022/05/31 00:01:35 |
Line 591 assert_failed(const char *file, int line |
|
Line 591 assert_failed(const char *file, int line |
|
{ |
{ |
const char *fn; |
const char *fn; |
|
|
|
/* |
|
* After encountering a parse error in the grammar, lint often does |
|
* not properly clean up its data structures, especially in 'dcs', |
|
* the stack of declaration levels. This often leads to assertion |
|
* failures. These cases are not interesting though, as the purpose |
|
* of lint is to check syntactically valid code. In such a case, |
|
* exit gracefully. This allows a fuzzer like afl to focus on more |
|
* interesting cases instead of reporting nonsense translation units |
|
* like 'f=({e:;}' or 'v(const(char););e(v){'. |
|
*/ |
|
if (sytxerr > 0) |
|
norecover(); |
|
|
fn = lbasename(curr_pos.p_file); |
fn = lbasename(curr_pos.p_file); |
(void)fflush(stdout); |
(void)fflush(stdout); |
(void)fprintf(stderr, |
(void)fprintf(stderr, |