From f8ebfe7c5113c5de8cc0b097c22aa46bacaebd8c Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Sun, 15 Sep 2002 07:54:01 +0000 Subject: [PATCH] - Hopefully fix problem with __autoload not working well with inherited classes. - There might still be some weird situations I haven't thought of. --- Zend/zend_compile.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 8717ec856b..066a223e46 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1671,6 +1671,7 @@ ZEND_API int do_bind_function_or_class(zend_op *opline, HashTable *function_tabl int parent_name_length; char *class_name, *parent_name; int found_ce; + int retval; found_ce = zend_hash_find(class_table, opline->op1.u.constant.value.str.val, opline->op1.u.constant.value.str.len, (void **) &pce); @@ -1692,7 +1693,14 @@ ZEND_API int do_bind_function_or_class(zend_op *opline, HashTable *function_tabl /* Obtain parent class */ parent_name_length = class_name - opline->op2.u.constant.value.str.val - 1; parent_name = estrndup(opline->op2.u.constant.value.str.val, parent_name_length); - if (zend_hash_find(class_table, parent_name, parent_name_length+1, (void **) &parent_pce)==FAILURE) { + if (!compile_time) { + TSRMLS_FETCH(); + + retval = zend_lookup_class(parent_name, parent_name_length, &parent_pce TSRMLS_CC); + } else { + retval = zend_hash_find(class_table, parent_name, parent_name_length+1, (void **) &parent_pce); + } + if (retval == FAILURE) { if (!compile_time) { zend_error(E_ERROR, "Class %s: Cannot inherit from undefined class %s", class_name, parent_name); } -- 2.50.1