com php-src: Fix bug #68163: Zend/tests/bug68163.phpt Zend/zend_object_handlers.c

From: Date: Mon, 06 Oct 2014 16:45:08 +0000
Subject: com php-src: Fix bug #68163: Zend/tests/bug68163.phpt Zend/zend_object_handlers.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-82167@lists.php.net to get a copy of this message
Commit: 03c726d7281feb0c08c4ea37e48f69ded71a410a Author: Nikita Popov <nikic@php.net> Mon, 6 Oct 2014 18:45:08 +0200 Parents: 5d7ccb758b407d1ba6bc7502b22ebb7cfcd2912c Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=03c726d7281feb0c08c4ea37e48f69ded71a410a Log: Fix bug #68163 Bugs: https://bugs.php.net/68163 Changed paths: A Zend/tests/bug68163.phpt M Zend/zend_object_handlers.c Diff: diff --git a/Zend/tests/bug68163.phpt b/Zend/tests/bug68163.phpt new file mode 100644 index 0000000..2ea0da3 --- /dev/null +++ b/Zend/tests/bug68163.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #68163: Using reference as object property name +--FILE-- +<?php + +$obj = (object) ['foo' => 'bar']; +$foo = 'foo'; +$ref =& $foo; +var_dump($obj->$foo); + +?> +--EXPECT-- +string(3) "bar" diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 5ee9847..02c2b10 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -475,8 +475,7 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_ ZVAL_UNDEF(&tmp_member); if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) { - ZVAL_DUP(&tmp_member, member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string(member)); member = &tmp_member; cache_slot = NULL; } @@ -567,8 +566,7 @@ ZEND_API void zend_std_write_property(zval *object, zval *member, zval *value, v ZVAL_UNDEF(&tmp_member); if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) { - ZVAL_DUP(&tmp_member, member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string(member)); member = &tmp_member; cache_slot = NULL; } @@ -786,8 +784,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, ZVAL_UNDEF(&tmp_member); if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) { - ZVAL_DUP(&tmp_member, member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string(member)); member = &tmp_member; cache_slot = NULL; } @@ -855,8 +852,7 @@ static void zend_std_unset_property(zval *object, zval *member, void **cache_slo ZVAL_UNDEF(&tmp_member); if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) { - ZVAL_DUP(&tmp_member, member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string(member)); member = &tmp_member; cache_slot = NULL; } @@ -1453,8 +1449,7 @@ static int zend_std_has_property(zval *object, zval *member, int has_set_exists, ZVAL_UNDEF(&tmp_member); if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) { - ZVAL_DUP(&tmp_member, member); - convert_to_string(&tmp_member); + ZVAL_STR(&tmp_member, zval_get_string(member)); member = &tmp_member; cache_slot = NULL; }

« previous php.cvs (#82167) next »