Skip to content

Commit f58c9d5

Browse files
committed
Copy attribute arguments in function_copy_ctor
1 parent 6f04985 commit f58c9d5

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

Zend/zend.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -666,12 +666,19 @@ static void function_copy_ctor(zval *zv) /* {{{ */
666666
func->common.arg_info = new_arg_info + 1;
667667
}
668668
if (old_func->common.attributes) {
669-
zend_attribute *attr;
669+
zend_attribute *old_attr;
670670

671671
func->common.attributes = NULL;
672672

673-
ZEND_HASH_PACKED_FOREACH_PTR(old_func->common.attributes, attr) {
674-
zend_add_attribute(&func->common.attributes, attr->name, attr->argc, attr->flags, attr->offset, attr->lineno);
673+
ZEND_HASH_PACKED_FOREACH_PTR(old_func->common.attributes, old_attr) {
674+
uint32_t i;
675+
zend_attribute *attr;
676+
677+
attr = zend_add_attribute(&func->common.attributes, old_attr->name, old_attr->argc, old_attr->flags, old_attr->offset, old_attr->lineno);
678+
679+
for (i = 0 ; i < old_attr->argc; i++) {
680+
ZVAL_COPY_OR_DUP(&attr->args[i].value, &old_attr->args[i].value);
681+
}
675682
} ZEND_HASH_FOREACH_END();
676683
}
677684
}

0 commit comments

Comments
 (0)