build cleanup
[m6w6/ext-psi] / src / types / let_func.c
index 468d215ae3cdf8559488e78a780fe5b32762ce6e..4a61632238f4bf54e5ab84244455d6d19eee6c53 100644 (file)
@@ -35,7 +35,7 @@
 struct psi_let_func *psi_let_func_init(token_t type, zend_string *name,
                struct psi_impl_var *var)
 {
-       struct psi_let_func *func = calloc(1, sizeof(*func));
+       struct psi_let_func *func = pecalloc(1, sizeof(*func), 1);
        func->type = type;
        func->name = zend_string_copy(name);
        func->var = var;
@@ -58,26 +58,26 @@ void psi_let_func_free(struct psi_let_func **func_ptr)
        }
 }
 
-void psi_let_func_dump(int fd, struct psi_let_func *func, unsigned level)
+void psi_let_func_dump(struct psi_dump *dump, struct psi_let_func *func, unsigned level)
 {
-       dprintf(fd, "%s(%s\t/* fqn=%s */", func->name->val, func->var->name->val,
+       PSI_DUMP(dump, "%s(%s\t/* fqn=%s */", func->name->val, func->var->name->val,
                        func->var->fqn->val);
 
        if (func->inner) {
                size_t i = 0, count = psi_plist_count(func->inner);
                struct psi_let_exp *inner;
 
-               dprintf(fd, ",");
+               PSI_DUMP(dump, ",");
                ++level;
                while (psi_plist_get(func->inner, i++, &inner)) {
-                       dprintf(fd, "\n");
-                       psi_let_exp_dump(fd, inner, level, i == count);
+                       PSI_DUMP(dump, "\n");
+                       psi_let_exp_dump(dump, inner, level, i == count);
                }
                --level;
-               dprintf(fd, "\n");
-               dprintf(fd, "%s", psi_t_indent(level));
+               PSI_DUMP(dump, "\n");
+               PSI_DUMP(dump, "%s", psi_t_indent(level));
        }
-       dprintf(fd, ")");
+       PSI_DUMP(dump, ")");
 }
 
 static inline int validate_let_func_type(struct psi_data *data,
@@ -139,6 +139,7 @@ static inline bool validate_let_func_inner(struct psi_data *data,
 
                                if (name) {
                                        sub_arg = psi_decl_arg_get_by_name(sub_args, name);
+                                       zend_string_release(name);
                                }
                                if (!name || !sub_arg) {
                                        /* remove expr for portability with different struct members */
@@ -349,11 +350,12 @@ static void *exec_let_func_arrval(struct psi_let_exp *val,
 
                if (frame_arg->zval_ptr) {
                        while (psi_plist_get(func->inner, i++, &inner)) {
-                               darg_member = psi_decl_arg_get_by_name(darg_members,
-                                               psi_let_exp_get_decl_var_name(inner));
+                               zend_string *var_name = psi_let_exp_get_decl_var_name(inner);
+                               darg_member = psi_decl_arg_get_by_name(darg_members, var_name);
 
                                exec_let_func_arrval_inner(func, darg, darg_member, frame_arg,
                                                inner, container, frame);
+                               zend_string_release(var_name);
                        }
                }
        } else if (func->inner) {