X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fparser.h;h=de5ba10fbdebede9a99037a54a0e393b121e834c;hp=29bf9d326ce17727b66bd18969c9d774110de184;hb=2454ceb434f8190937580d1cca96f5737908224e;hpb=b0a8b273be0744ed445fbe6c935a04ee7a749f14 diff --git a/src/parser.h b/src/parser.h index 29bf9d3..de5ba10 100644 --- a/src/parser.h +++ b/src/parser.h @@ -43,6 +43,9 @@ typedef union impl_val { uint64_t u64; float fval; double dval; +#ifdef HAVE_LONG_DOUBLE + long double ldval; +#endif union { zend_bool bval; zend_long lval; @@ -320,7 +323,7 @@ typedef struct decl_callinfo { void *info; size_t argc; void **args; - void *rval; + void **rval; } decl_callinfo; typedef struct decl { @@ -397,6 +400,9 @@ static inline void free_decl_struct(decl_struct *s) { if (s->args) { free_decl_args(s->args); } + if (s->engine.type && s->engine.dtor) { + s->engine.dtor(s->engine.type); + } free(s->name); free(s); } @@ -1210,7 +1216,7 @@ static inline impl_val *enref_impl_val(void *ptr, decl_var *var) { var->name, var->pointer_level, var->arg->var->pointer_level, var->array_size, var->arg->var->array_size); #endif - if (!var->pointer_level && real_decl_type(var->arg->type)->type != PSI_T_STRUCT) { + if (!var->pointer_level ){//&& real_decl_type(var->arg->type)->type != PSI_T_STRUCT) { return ptr; }