Fix: sometimes crashed on initializers for unknown types
This commit is contained in:
@@ -140,6 +140,9 @@ gen_tpcheck(tpp)
|
||||
if (! valid_type(tp, "union"))
|
||||
gen_error = pack_level;
|
||||
break;
|
||||
case ERRONEOUS:
|
||||
if (! gen_error) gen_error = pack_level;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,6 +255,9 @@ gen_tphead(tpp, nest)
|
||||
return gen_tphead(&(sd->sd_type), 1);
|
||||
}
|
||||
return &(sd->sd_type);
|
||||
case ERRONEOUS:
|
||||
if (! gen_error) gen_error = pack_level;
|
||||
/* fall through */
|
||||
default:
|
||||
p->nelem = 1;
|
||||
p->elem_count = 1;
|
||||
@@ -273,6 +279,9 @@ gen_tpmiddle()
|
||||
again:
|
||||
tp = *(p->s_tpp);
|
||||
switch(tp->tp_fund) {
|
||||
case ERRONEOUS:
|
||||
if (! gen_error) gen_error = pack_level;
|
||||
return p->s_tpp;
|
||||
default:
|
||||
if (p->elem_count == p->nelem && p->s_nested) {
|
||||
p = p->next;
|
||||
@@ -556,6 +565,8 @@ and also to prevent runtime coercions for compile-time constants.
|
||||
#endif NOBITFIELD
|
||||
|
||||
case ERRONEOUS:
|
||||
if (! gen_error) gen_error = pack_level;
|
||||
/* fall through */
|
||||
case VOID:
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user