]> granicus.if.org Git - php/commitdiff
Add missing string cast for non-cv var fetches
authorNikita Popov <nikic@php.net>
Sun, 4 Jan 2015 17:07:44 +0000 (18:07 +0100)
committerNikita Popov <nikic@php.net>
Sun, 4 Jan 2015 17:07:44 +0000 (18:07 +0100)
Zend/tests/variable_with_boolean_name.phpt [new file with mode: 0644]
Zend/zend_compile.c

diff --git a/Zend/tests/variable_with_boolean_name.phpt b/Zend/tests/variable_with_boolean_name.phpt
new file mode 100644 (file)
index 0000000..e0daad5
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+Variable with boolean name
+--FILE--
+<?php
+
+${true} = 42;
+var_dump(${true});
+var_dump(${'1'});
+
+?>
+--EXPECT--
+int(42)
+int(42)
index 334d733f2939277480dad3124486ea1af1d72a3b..c06ebc4595e74904ccb5befa8f41ed469f9671f5 100644 (file)
@@ -1978,6 +1978,9 @@ static zend_op *zend_compile_simple_var_no_cv(znode *result, zend_ast *ast, uint
        }
 
        zend_compile_expr(&name_node, name_ast);
+       if (name_node.op_type == IS_CONST) {
+               convert_to_string(&name_node.u.constant);
+       }
 
        opline = zend_emit_op(result, ZEND_FETCH_R, &name_node, NULL);