]> granicus.if.org Git - php/commitdiff
Fix #41640 (get_class_vars produces error on class constants)
authorJohannes Schlüter <johannes@php.net>
Sat, 9 Jun 2007 08:36:52 +0000 (08:36 +0000)
committerJohannes Schlüter <johannes@php.net>
Sat, 9 Jun 2007 08:36:52 +0000 (08:36 +0000)
Zend/tests/bug41640.phpt [new file with mode: 0644]
Zend/zend_builtin_functions.c

diff --git a/Zend/tests/bug41640.phpt b/Zend/tests/bug41640.phpt
new file mode 100644 (file)
index 0000000..c859d90
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+Bug #41640 (get_class_vars produces error on class constants)
+--FILE--
+<?php
+class foo {
+        const FOO = 1;
+        public $x = self::FOO;
+}
+
+var_dump(get_class_vars("foo"));
+--EXPECT--
+array(1) {
+  ["x"]=>
+  int(1)
+}
index 97fedfa18e3adbcd70c877f5fed2f430e8de2297..63a96f85884d4ea7501d98377ddf3c84ad691308 100644 (file)
@@ -815,8 +815,8 @@ ZEND_FUNCTION(get_class_vars)
                RETURN_FALSE;
        } else {
                array_init(return_value);
-               add_class_vars(*pce, &(*pce)->default_properties, return_value TSRMLS_CC);
                zend_update_class_constants(*pce TSRMLS_CC);
+               add_class_vars(*pce, &(*pce)->default_properties, return_value TSRMLS_CC);
                add_class_vars(*pce, CE_STATIC_MEMBERS(*pce), return_value TSRMLS_CC);
        }
 }