X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmarshal.c;h=95ea6d9b51c103f926b6974bb98baf94342582a0;hp=c75a358bf8d9fbe9622d2d4f5a12645150546b51;hb=8d2ff6a3b85203ea5f8398f846a7764fd0e1d126;hpb=c5f1eb3b7e969dde73a6e485a19d5a2766651970 diff --git a/src/marshal.c b/src/marshal.c index c75a358..95ea6d9 100644 --- a/src/marshal.c +++ b/src/marshal.c @@ -248,10 +248,10 @@ void psi_to_array(zval *return_value, set_value *set, impl_val *r_val) if (t == PSI_T_STRUCT) { // decl_struct *s = real_decl_type(var->arg->type)->strct; - if (set->count) { + if (set->inner && set->inner->count) { /* explicit member casts */ - for (i = 0; i < set->count; ++i) { - set_value *sub_set = set->inner[i]; + for (i = 0; i < set->inner->count; ++i) { + set_value *sub_set = set->inner->vals[i]; decl_var *sub_var = sub_set->vars->vars[0]; sub_set->outer.val = ret_val; @@ -301,7 +301,7 @@ void psi_to_array(zval *return_value, set_value *set, impl_val *r_val) char *ptr; zend_long i, n = psi_long_num_exp(set->num, set->outer.val); size_t size = psi_t_size(var->arg->var->pointer_level ? PSI_T_POINTER : t); - set_value *sub_set = set->inner[0]; + set_value *sub_set = set->inner->vals[0]; sub_set->outer.val = set->outer.val; for (i = 0; i < n; ++i) { @@ -314,7 +314,7 @@ void psi_to_array(zval *return_value, set_value *set, impl_val *r_val) zval ele; char *ptr = ret_val->ptr; size_t size = psi_t_size(var->arg->var->pointer_level ? PSI_T_POINTER : t); - set_value *sub_set = set->inner[0]; + set_value *sub_set = set->inner->vals[0]; sub_set->outer.val = set->outer.val; while (*(void **) ptr) {