Last fix didn't work for function f1int in the added testcase.
Showing the changes to tccgen.c (1 of 3 files). Show all
Unified · Split
| @@ -5846,8 +5846,12 @@ static void decl_initializer_alloc(CType *type, AttributeDef *ad, int r, · 5845 unmodified lines | |||
| 5846 | if (size < 0) | 5846 | if (size < 0) |
| 5847 | tcc_error("unknown type size"); | 5847 | tcc_error("unknown type size"); |
| 5848 | } | 5848 | } |
| 5849 | if (flexible_array) | 5849 | /* If there's a flex member and it was used in the initializer |
| 5850 | size += flexible_array->type.ref->c * pointed_size(&flexible_array->type) + 1; | 5850 | adjust size. */ |
| 5851 | if (flexible_array && | ||
| 5852 | flexible_array->type.ref->c > 0) | ||
| 5853 | size += flexible_array->type.ref->c | ||
| 5854 | * pointed_size(&flexible_array->type); | ||
| 5851 | /* take into account specified alignment if bigger */ | 5855 | /* take into account specified alignment if bigger */ |
| 5852 | if (ad->a.aligned) { | 5856 | if (ad->a.aligned) { |
| 5853 | if (ad->a.aligned > align) | 5857 | if (ad->a.aligned > align) |