]> granicus.if.org Git - php/commitdiff
- Fix bug when acccessing $this not in class scope.
authorAndi Gutmans <andi@php.net>
Mon, 1 Jul 2002 15:13:39 +0000 (15:13 +0000)
committerAndi Gutmans <andi@php.net>
Mon, 1 Jul 2002 15:13:39 +0000 (15:13 +0000)
Zend/zend_compile.c

index ed573dffb1a7e006bd1a9d30660efc40f9c3016f..49a388e5c0d5198282f82a62e4614bfa433ef575 100644 (file)
@@ -2216,17 +2216,18 @@ void zend_do_fetch_property(znode *result, znode *object, znode *property TSRMLS
                        SET_UNUSED(opline_ptr->op2);
                        opline_ptr->op2.u.EA.type = ZEND_FETCH_FROM_THIS;
 
-                       if ((opline_ptr->op1.op_type == IS_CONST) && zend_hash_exists(&CG(active_class_entry)->private_properties, opline_ptr->op1.u.constant.value.str.val, opline_ptr->op1.u.constant.value.str.len+1)) {
-                               char *priv_name;
-                               int priv_name_length;
+                       if (CG(active_class_entry)) {
+                               if ((opline_ptr->op1.op_type == IS_CONST) && zend_hash_exists(&CG(active_class_entry)->private_properties, opline_ptr->op1.u.constant.value.str.val, opline_ptr->op1.u.constant.value.str.len+1)) {
+                                       char *priv_name;
+                                       int priv_name_length;
 
-                               mangle_private_property_name(&priv_name, &priv_name_length, CG(active_class_entry)->name, CG(active_class_entry)->name_length, opline_ptr->op1.u.constant.value.str.val, opline_ptr->op1.u.constant.value.str.len);
+                                       mangle_private_property_name(&priv_name, &priv_name_length, CG(active_class_entry)->name, CG(active_class_entry)->name_length, opline_ptr->op1.u.constant.value.str.val, opline_ptr->op1.u.constant.value.str.len);
 
-                               STR_FREE(opline_ptr->op1.u.constant.value.str.val);
-                               opline_ptr->op1.u.constant.value.str.val = priv_name;
-                               opline_ptr->op1.u.constant.value.str.len = priv_name_length;
+                                       STR_FREE(opline_ptr->op1.u.constant.value.str.val);
+                                       opline_ptr->op1.u.constant.value.str.val = priv_name;
+                                       opline_ptr->op1.u.constant.value.str.len = priv_name_length;
+                               }
                        }
-
                        *result = opline_ptr->result;
                        return;
                }