pe*alloc
[m6w6/ext-psi] / src / marshal.c
index 834a38f3b4bc0323914001e3ac3d6ecffbda7989..14f0dcaa20e6ab82573086c5acde3c135ba6b9cf 100644 (file)
@@ -96,7 +96,7 @@ zend_internal_arg_info *psi_internal_arginfo(struct psi_impl *impl)
        zend_internal_function_info *fi;
        struct psi_impl_arg *iarg;
 
-       aip = calloc(argc + 1 + !!impl->func->vararg, sizeof(*aip));
+       aip = pecalloc(argc + 1 + !!impl->func->vararg, sizeof(*aip), 1);
 
        fi = (zend_internal_function_info *) &aip[0];
 #ifdef ZEND_TYPE_ENCODE
@@ -112,7 +112,7 @@ zend_internal_arg_info *psi_internal_arginfo(struct psi_impl *impl)
                struct psi_impl_arg *vararg = impl->func->vararg;
                zend_internal_arg_info *ai = &aip[argc];
 
-               ai->name = vararg->var->name;
+               ai->name = vararg->var->name->val;
 #ifdef ZEND_TYPE_ENCODE
                ai->type = ZEND_TYPE_ENCODE(psi_internal_type(vararg->type), 1);
 #else
@@ -128,7 +128,7 @@ zend_internal_arg_info *psi_internal_arginfo(struct psi_impl *impl)
        while (psi_plist_get(impl->func->args, i++, &iarg)) {
                zend_internal_arg_info *ai = &aip[i];
 
-               ai->name = iarg->var->name;
+               ai->name = iarg->var->name->val;
 #ifdef ZEND_TYPE_ENCODE
                ai->type = ZEND_TYPE_ENCODE(psi_internal_type(iarg->type), 1);
 #else
@@ -526,8 +526,6 @@ void psi_set_to_string(zval *return_value, struct psi_set_exp *set, impl_val *re
        impl_val *ptr = deref_impl_val(ret_val, var);
        char *str;
 
-       /* holy moly, this breaks arrays of pointers to char,
-        * like e.g. tzname */
        if (var->arg->var->array_size && var->arg->var->pointer_level == 1) {
                str = (char *) ptr;
        } else {
@@ -734,7 +732,7 @@ void psi_set_to_array(zval *return_value, struct psi_set_exp *set, impl_val *r_v
 
                ZVAL_NULL(&ele);
                psi_set_exp_exec_ex(sub_exp, &ele, sym->ptr, frame);
-               add_assoc_zval(return_value, ivar->name + 1, &ele);
+               add_assoc_zval_ex(return_value, ivar->name->val + 1, ivar->name->len - 1, &ele);
        }
 }