projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix enum dump; fix float formats; fix dumps
[m6w6/ext-psi]
/
src
/
types
/
let_func.c
diff --git
a/src/types/let_func.c
b/src/types/let_func.c
index 468d215ae3cdf8559488e78a780fe5b32762ce6e..4a61632238f4bf54e5ab84244455d6d19eee6c53 100644
(file)
--- a/
src/types/let_func.c
+++ b/
src/types/let_func.c
@@
-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 *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;
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;
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)) {
++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;
}
--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,
}
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);
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 */
}
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)) {
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);
exec_let_func_arrval_inner(func, darg, darg_member, frame_arg,
inner, container, frame);
+ zend_string_release(var_name);
}
}
} else if (func->inner) {
}
}
} else if (func->inner) {