]> granicus.if.org Git - php/commitdiff
- Hopefully fix problem with __autoload not working well with inherited classes.
authorAndi Gutmans <andi@php.net>
Sun, 15 Sep 2002 07:54:01 +0000 (07:54 +0000)
committerAndi Gutmans <andi@php.net>
Sun, 15 Sep 2002 07:54:01 +0000 (07:54 +0000)
- There might still be some weird situations I haven't thought of.

Zend/zend_compile.c

index 8717ec856b902565aee56a051a15b39bac70fa64..066a223e46a5e9b3ce19c556069b25d0498374b5 100644 (file)
@@ -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);
                                        }