Skip to content

Commit a8254ed

Browse files
committed
Simplify unserialize_callback_func handling
1 parent 449bb05 commit a8254ed

File tree

1 file changed

+8
-27
lines changed

1 file changed

+8
-27
lines changed

ext/standard/var_unserializer.re

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,22 +1201,17 @@ object ":" uiv ":" ["] {
12011201
/* Try to find class directly */
12021202
BG(serialize_lock)++;
12031203
ce = zend_lookup_class_ex(class_name, lc_name, 0);
1204-
zend_string_release_ex(lc_name, 0);
1205-
if (ce) {
1206-
BG(serialize_lock)--;
1207-
if (EG(exception)) {
1208-
zend_string_release_ex(class_name, 0);
1209-
return 0;
1210-
}
1211-
break;
1212-
}
12131204
BG(serialize_lock)--;
1214-
1205+
zend_string_release_ex(lc_name, 0);
12151206
if (EG(exception)) {
12161207
zend_string_release_ex(class_name, 0);
12171208
return 0;
12181209
}
12191210

1211+
if (ce) {
1212+
break;
1213+
}
1214+
12201215
/* Check for unserialize callback */
12211216
if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
12221217
incomplete_class = 1;
@@ -1227,29 +1222,15 @@ object ":" uiv ":" ["] {
12271222
/* Call unserialize callback */
12281223
ZVAL_STRING(&user_func, PG(unserialize_callback_func));
12291224

1230-
ZVAL_STR_COPY(&args[0], class_name);
1225+
ZVAL_STR(&args[0], class_name);
12311226
BG(serialize_lock)++;
1232-
if (call_user_function(NULL, NULL, &user_func, &retval, 1, args) != SUCCESS) {
1233-
BG(serialize_lock)--;
1234-
if (EG(exception)) {
1235-
zend_string_release_ex(class_name, 0);
1236-
zval_ptr_dtor(&user_func);
1237-
zval_ptr_dtor(&args[0]);
1238-
return 0;
1239-
}
1240-
php_error_docref(NULL, E_WARNING, "defined (%s) but not found", Z_STRVAL(user_func));
1241-
incomplete_class = 1;
1242-
ce = PHP_IC_ENTRY;
1243-
zval_ptr_dtor(&user_func);
1244-
zval_ptr_dtor(&args[0]);
1245-
break;
1246-
}
1227+
call_user_function(NULL, NULL, &user_func, &retval, 1, args);
12471228
BG(serialize_lock)--;
12481229
zval_ptr_dtor(&retval);
1230+
12491231
if (EG(exception)) {
12501232
zend_string_release_ex(class_name, 0);
12511233
zval_ptr_dtor(&user_func);
1252-
zval_ptr_dtor(&args[0]);
12531234
return 0;
12541235
}
12551236

0 commit comments

Comments
 (0)