uint64_t u64;
float fval;
double dval;
+#ifdef HAVE_LONG_DOUBLE
+ long double ldval;
+#endif
union {
zend_bool bval;
zend_long lval;
void *info;
size_t argc;
void **args;
- void *rval;
+ void **rval;
} decl_callinfo;
typedef struct decl {
char *name;
decl_args *args;
size_t size;
+ struct {
+ void *type;
+ void (*dtor)(void *type);
+ } engine;
} decl_struct;
static inline decl_struct *init_decl_struct(const char *name, decl_args *args) {
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);
}
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;
}