Skip to content

Commit 422b114

Browse files
committed
Cleanup
1 parent 867fa57 commit 422b114

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

Zend/zend_builtin_functions.c

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,6 @@ zend_result zend_startup_builtin_functions(void) /* {{{ */
6969
}
7070
/* }}} */
7171

72-
static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_clone_call(zend_function *clone, zend_class_entry *scope)
73-
{
74-
zend_throw_error(NULL, "Call to %s %s::__clone() from %s%s",
75-
zend_visibility_string(clone->common.fn_flags), ZSTR_VAL(clone->common.scope->name),
76-
scope ? "scope " : "global scope",
77-
scope ? ZSTR_VAL(scope->name) : ""
78-
);
79-
}
80-
8172
ZEND_FUNCTION(clone)
8273
{
8374
zend_object *zobj;
@@ -92,14 +83,10 @@ ZEND_FUNCTION(clone)
9283

9384
zend_class_entry *scope = zend_get_executed_scope();
9485

95-
zval *obj;
96-
zend_class_entry *ce;
97-
zend_function *clone;
98-
zend_object_clone_obj_t clone_call;
86+
zend_class_entry *ce = zobj->ce;
87+
zend_function *clone = ce->clone;
88+
zend_object_clone_obj_t clone_call = zobj->handlers->clone_obj;
9989

100-
ce = zobj->ce;
101-
clone = ce->clone;
102-
clone_call = zobj->handlers->clone_obj;
10390
if (UNEXPECTED(clone_call == NULL)) {
10491
zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
10592
RETURN_THROWS();
@@ -109,19 +96,26 @@ ZEND_FUNCTION(clone)
10996
if (clone->common.scope != scope) {
11097
if (UNEXPECTED(clone->common.fn_flags & ZEND_ACC_PRIVATE)
11198
|| UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
112-
zend_wrong_clone_call(clone, scope);
99+
zend_throw_error(NULL, "Call to %s %s::__clone() from %s%s",
100+
zend_visibility_string(clone->common.fn_flags), ZSTR_VAL(clone->common.scope->name),
101+
scope ? "scope " : "global scope",
102+
scope ? ZSTR_VAL(scope->name) : ""
103+
);
113104
RETURN_THROWS();
114105
}
115106
}
116107
}
117108

118109
zend_object *cloned = clone_call(zobj);
119110

120-
for (uint32_t i = 0; i < argc; i++) {
121-
zend_string *key = zend_long_to_str(i);
111+
if (UNEXPECTED(argc > 0)) {
112+
for (uint32_t i = 0; i < argc; i++) {
113+
zend_string *key = zend_long_to_str(i);
122114

123-
zend_update_property_ex(scope, cloned, key, &args[i]);
115+
zend_update_property_ex(scope, cloned, key, &args[i]);
116+
}
124117
}
118+
125119
if (named_params != NULL) {
126120
zend_string *key;
127121
zval *val;

0 commit comments

Comments
 (0)