X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fdecl_struct.c;h=9ba53e97348a3856dc0d98e806b140a889068bd7;hb=440ff658995f1378fd74c0101ff6c2b4951ffdf9;hp=973f6333537163134e900ceda726596858c60720;hpb=18ca609e4fa08a1c8fcdbb58e9aeb5fe55538b3c;p=m6w6%2Fext-psi diff --git a/src/types/decl_struct.c b/src/types/decl_struct.c index 973f633..9ba53e9 100644 --- a/src/types/decl_struct.c +++ b/src/types/decl_struct.c @@ -84,6 +84,9 @@ bool psi_decl_struct_validate(struct psi_data *data, struct psi_decl_struct *s, size_t i, pos, len, size, align; struct psi_decl_arg *darg, *prev_arg; + if (!s) { + return false; + } if (psi_validate_stack_has_struct(type_stack, s->name)) { return true; } @@ -128,7 +131,7 @@ bool psi_decl_struct_validate(struct psi_data *data, struct psi_decl_struct *s, } } else { if (i) { - if (prev_arg->layout->bfw && darg->layout->bfw) { + if (prev_arg->layout && prev_arg->layout->bfw && darg->layout && darg->layout->bfw) { struct psi_decl_type *real = NULL; size_t max_bfw = 8 * psi_decl_type_get_size(prev_arg->type, &real); @@ -198,6 +201,9 @@ bool psi_decl_struct_validate(struct psi_data *data, struct psi_decl_struct *s, size_t psi_decl_struct_get_align(struct psi_decl_struct *s) { + if (!s) { + return 0; + } if (!s->align) { s->align = psi_decl_type_get_args_align(s->args); }