Fix segfault with invalid function def

This invalid function definition:
  int f()[] {}
was tried to be handled but there was no testcase if it actually worked.
This fixes it and adds a TCC only testcase.
master
Michael Matz 2017-05-05 22:01:02 +02:00
parent d4878985e8
commit a7a3627ab2
2 changed files with 6 additions and 1 deletions

View File

@ -4013,7 +4013,7 @@ static int post_type(CType *type, AttributeDef *ad, int storage, int td)
if (tok == '[') {
next();
skip(']'); /* only handle simple "[]" */
type->t |= VT_PTR;
mk_pointer(type);
}
/* we push a anonymous symbol which will contain the function prototype */
ad->a.func_args = arg_size;

View File

@ -176,6 +176,11 @@ static int onetwothree = 123;
#define B3 4
#endif
#ifdef __TINYC__
/* We try to handle this syntax. Make at least sure it doesn't segfault. */
char invalid_function_def()[] {}
#endif
#define __INT64_C(c) c ## LL
#define INT64_MIN (-__INT64_C(9223372036854775807)-1)