]> granicus.if.org Git - php/commitdiff
- Fix bug introduced with latest class hash table change.
authorAndi Gutmans <andi@php.net>
Tue, 12 Mar 2002 18:53:27 +0000 (18:53 +0000)
committerAndi Gutmans <andi@php.net>
Tue, 12 Mar 2002 18:53:27 +0000 (18:53 +0000)
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_execute.c
Zend/zend_opcode.c

index e0540ffe48476aa4f902f1e0032d07f9d8ab2a29..d1fc686b6ea4fd509370b76b184cd950857cc907 100644 (file)
@@ -2048,7 +2048,7 @@ void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znod
                CG(active_ce_parent_class_name).value.str.val = estrndup(parent_class_name->u.constant.value.str.val, parent_class_name->u.constant.value.str.len);
                CG(active_ce_parent_class_name).value.str.len = parent_class_name->u.constant.value.str.len;
 
-               if (zend_hash_find(CG(active_class_entry)?&CG(active_class_entry)->class_table:CG(class_table), parent_class_name->u.constant.value.str.val, parent_class_name->u.constant.value.str.len+1, (void **) &parent_class)==SUCCESS) {
+               if (zend_hash_find(CG(active_class_entry)?&CG(active_class_entry)->class_table:CG(class_table), parent_class_name->u.constant.value.str.val, parent_class_name->u.constant.value.str.len+1, (void **) &parent_class_p)==SUCCESS) {
                        parent_class = *parent_class_p;
                        /* copy functions */
                        zend_hash_copy(&new_class_entry->function_table, &parent_class->function_table, (copy_ctor_func_t) function_add_ref, &tmp_zend_function, sizeof(zend_function));
index bc6dbd21c64bcfb5343d1c43e25e063df2bf8228..330bad464c62c8cd572e56dab8701d5b72e8a948 100644 (file)
@@ -388,7 +388,7 @@ ZEND_API void zend_file_handle_dtor(zend_file_handle *fh);
 
 ZEND_API void destroy_zend_function(zend_function *function);
 ZEND_API void destroy_zend_class(zend_class_entry **pce);
-void zend_class_add_ref(zend_class_entry *ce);
+void zend_class_add_ref(zend_class_entry **ce);
 
 #define ZEND_FUNCTION_DTOR (void (*)(void *)) destroy_zend_function
 #define ZEND_CLASS_DTOR (void (*)(void *)) destroy_zend_class
index 5253113ab3aabe87f3663c4e014a54dbf6df51f5..ce33a59b83cd281972cba4cfa7e4442870ab3631 100644 (file)
@@ -1754,7 +1754,7 @@ binary_assign_op_addr_obj:
                                                if (zend_hash_add(EG(class_table), class_name_strval, class_name_strlen + 1, import_ce, sizeof(zend_class_entry *), NULL) == FAILURE) {
                                                        zend_error(E_ERROR, "Import: class %s already exists in current scope", class_name_strval);
                                                }
-                                               zend_class_add_ref(*import_ce);
+                                               zend_class_add_ref(import_ce);
                                        } else {
                                                zend_class_entry *tmp_zend_class_entry;
 
index 6e5ca2aad2a6ff14fb728f9194e4b21c626a2578..9de9c78a4fb27c2cd0c8b9cce471038008692418 100644 (file)
@@ -142,9 +142,9 @@ ZEND_API void destroy_zend_class(zend_class_entry **pce)
 }
 
 
-void zend_class_add_ref(zend_class_entry *ce)
+void zend_class_add_ref(zend_class_entry **ce)
 {
-       (*ce->refcount)++;
+       (*(*ce)->refcount)++;
 }