svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/Zend/tests/bug60613.phpt branches/PHP_5_4/Zend/zend_compile.c trunk/Zend/tests/bug60613.phpt
trunk/Zend/zend_compile.c

From: Date: Wed, 28 Dec 2011 09:59:39 +0000
Subject: svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/Zend/tests/bug60613.phpt branches/PHP_5_4/Zend/zend_compile.c trunk/Zend/tests/bug60613.phpt
trunk/Zend/zend_compile.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-67365@lists.php.net to get a copy of this message
dmitry Wed, 28 Dec 2011 09:59:39 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=321463 Log: Fixed bug #60613 (Segmentation fault with $cls->{expr}() syntax) Bug: https://bugs.php.net/60613 (Closed) Segmentation fault with $cls->{expr}() syntax Changed paths: U php/php-src/branches/PHP_5_4/NEWS A php/php-src/branches/PHP_5_4/Zend/tests/bug60613.phpt U php/php-src/branches/PHP_5_4/Zend/zend_compile.c A php/php-src/trunk/Zend/tests/bug60613.phpt U php/php-src/trunk/Zend/zend_compile.c Modified: php/php-src/branches/PHP_5_4/NEWS =================================================================== --- php/php-src/branches/PHP_5_4/NEWS 2011-12-28 09:53:15 UTC (rev 321462) +++ php/php-src/branches/PHP_5_4/NEWS 2011-12-28 09:59:39 UTC (rev 321463) @@ -2,6 +2,7 @@ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Jan 2012, PHP 5.4.0 RC5 - Core: + . Fixed bug #60613 (Segmentation fault with $cls->{expr}() syntax). (Dmitry) . Fixed bug #60611 (Segmentation fault with Cls::{expr}() syntax). (Laruence) - CLI SAPI: Added: php/php-src/branches/PHP_5_4/Zend/tests/bug60613.phpt =================================================================== --- php/php-src/branches/PHP_5_4/Zend/tests/bug60613.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/Zend/tests/bug60613.phpt 2011-12-28 09:59:39 UTC (rev 321463) @@ -0,0 +1,19 @@ +--TEST-- +Bug #60613 (Segmentation fault with $cls->{expr}() syntax) +--FILE-- +<?php +class Cls { + function __call($name, $arg) { + } +} + +$cls = new Cls(); +$cls->{0}(); +$cls->{1.0}(); +$cls->{true}(); +$cls->{false}(); +$cls->{null}(); +echo "ok\n"; +--EXPECT-- +ok + Modified: php/php-src/branches/PHP_5_4/Zend/zend_compile.c =================================================================== --- php/php-src/branches/PHP_5_4/Zend/zend_compile.c 2011-12-28 09:53:15 UTC (rev 321462) +++ php/php-src/branches/PHP_5_4/Zend/zend_compile.c 2011-12-28 09:59:39 UTC (rev 321463) @@ -89,7 +89,8 @@ } while (0) #define FREE_POLYMORPHIC_CACHE_SLOT(literal) do { \ - if (CG(active_op_array)->literals[literal].cache_slot == \ + if (CG(active_op_array)->literals[literal].cache_slot != -1 && \ + CG(active_op_array)->literals[literal].cache_slot == \ CG(active_op_array)->last_cache_slot - POLYMORPHIC_CACHE_SLOT_SIZE) { \ CG(active_op_array)->literals[literal].cache_slot = -1; \ CG(active_op_array)->last_cache_slot -= POLYMORPHIC_CACHE_SLOT_SIZE; \ Added: php/php-src/trunk/Zend/tests/bug60613.phpt =================================================================== --- php/php-src/trunk/Zend/tests/bug60613.phpt (rev 0) +++ php/php-src/trunk/Zend/tests/bug60613.phpt 2011-12-28 09:59:39 UTC (rev 321463) @@ -0,0 +1,19 @@ +--TEST-- +Bug #60613 (Segmentation fault with $cls->{expr}() syntax) +--FILE-- +<?php +class Cls { + function __call($name, $arg) { + } +} + +$cls = new Cls(); +$cls->{0}(); +$cls->{1.0}(); +$cls->{true}(); +$cls->{false}(); +$cls->{null}(); +echo "ok\n"; +--EXPECT-- +ok + Modified: php/php-src/trunk/Zend/zend_compile.c =================================================================== --- php/php-src/trunk/Zend/zend_compile.c 2011-12-28 09:53:15 UTC (rev 321462) +++ php/php-src/trunk/Zend/zend_compile.c 2011-12-28 09:59:39 UTC (rev 321463) @@ -89,7 +89,8 @@ } while (0) #define FREE_POLYMORPHIC_CACHE_SLOT(literal) do { \ - if (CG(active_op_array)->literals[literal].cache_slot == \ + if (CG(active_op_array)->literals[literal].cache_slot != -1 && \ + CG(active_op_array)->literals[literal].cache_slot == \ CG(active_op_array)->last_cache_slot - POLYMORPHIC_CACHE_SLOT_SIZE) { \ CG(active_op_array)->literals[literal].cache_slot = -1; \ CG(active_op_array)->last_cache_slot -= POLYMORPHIC_CACHE_SLOT_SIZE; \

« previous php.cvs (#67365) next »