1
0
mirror of https://github.com/php/php-src.git synced 2026-04-14 11:32:11 +02:00

Revert fix for #24729, and refix

This commit is contained in:
Zeev Suraski
2003-07-21 07:42:15 +00:00
parent 98963e3c75
commit 754529920d

View File

@@ -2378,22 +2378,29 @@ int zend_fetch_class_handler(ZEND_OPCODE_HANDLER_ARGS)
} else {
class_name = get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R);
if (class_name->type == IS_OBJECT) {
ce = Z_OBJCE_P(class_name);
} else if (class_name->value.str.val && class_name->value.str.len) {
class_name_strval = zend_str_tolower_dup(class_name->value.str.val, class_name->value.str.len);
class_name_strlen = class_name->value.str.len;
free_class_name = 1;
} else {
class_name_strlen = 0;
switch (class_name->type) {
case IS_OBJECT:
ce = Z_OBJCE_P(class_name);
break;
case IS_STRING:
class_name_strval = zend_str_tolower_dup(class_name->value.str.val, class_name->value.str.len);
class_name_strlen = class_name->value.str.len;
free_class_name = 1;
break;
default:
zend_error(E_ERROR, "Class name must be a valid object or a string");
break;
}
}
if (!ce) {
if (EX(opline)->op1.op_type == IS_UNUSED && class_name_strlen) {
if (zend_lookup_class(class_name_strval, class_name_strlen, &pce TSRMLS_CC) == SUCCESS) {
ce = *pce;
}
int retval;
if (EX(opline)->op1.op_type == IS_UNUSED) {
retval = zend_lookup_class(class_name_strval, class_name_strlen, &pce TSRMLS_CC);
}
if (retval==SUCCESS) {
ce = *pce;
}
}