summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2007-07-27 16:29:12 +0000
committerDmitry Stogov <dmitry@php.net>2007-07-27 16:29:12 +0000
commit786621893e9590c9c45c4588ec748fdbb61e2fd8 (patch)
treee6f064eb7295a984798cc9f02cd87fc9f3424963
parentd3571ea2a9334d85e10c1cc67d92ce538abf88bd (diff)
downloadphp-git-786621893e9590c9c45c4588ec748fdbb61e2fd8.tar.gz
Improved fix for bug #41633 (self:: doesn't work for constants) to support function define()
-rwxr-xr-xZend/tests/bug41633_4.phpt12
-rw-r--r--Zend/zend_constants.c2
2 files changed, 13 insertions, 1 deletions
diff --git a/Zend/tests/bug41633_4.phpt b/Zend/tests/bug41633_4.phpt
new file mode 100755
index 0000000000..3507f6a08c
--- /dev/null
+++ b/Zend/tests/bug41633_4.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #41633.4 (self:: doesn't work for constants)
+--FILE--
+<?php
+class Foo {
+ const A = self::B;
+ const B = "ok";
+}
+var_dump(defined("Foo::A"));
+?>
+--EXPECT--
+bool(true)
diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c
index ab0c1c5122..fba024ac44 100644
--- a/Zend/zend_constants.c
+++ b/Zend/zend_constants.c
@@ -271,7 +271,7 @@ ZEND_API int zend_get_constant_ex(char *name, uint name_len, zval *result, zend_
efree(class_name);
if (retval) {
- zval_update_constant(ret_constant, (void*)1 TSRMLS_CC);
+ zval_update_constant_ex(ret_constant, (void*)1, *ce TSRMLS_CC);
*result = **ret_constant;
zval_copy_ctor(result);
}