svn: /php/php-src/branches/PHP_5_3/ NEWS Zend/tests/bug48912.phpt Zend/zend_vm_def.h Zend/zend_vm_execute.h
| From: | Dmitry Stogov | Date: | Tue, 28 Jul 2009 12:35:27 +0000 |
| Subject: | svn: /php/php-src/branches/PHP_5_3/ NEWS Zend/tests/bug48912.phpt Zend/zend_vm_def.h Zend/zend_vm_execute.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-59873@lists.php.net to get a copy of this message | ||
dmitry Tue, 28 Jul 2009 12:35:27 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=286452
Log:
Fixed bug #48912 (Namespace causes unexpected strict behaviour with extract())
Bug: http://bugs.php.net/48912 (Assigned) Namespace causes
unexpected strict behaviour with extract()
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
A php/php-src/branches/PHP_5_3/Zend/tests/bug48912.phpt
U php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h
U php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2009-07-28 12:26:16 UTC (rev 286451)
+++ php/php-src/branches/PHP_5_3/NEWS 2009-07-28 12:35:27 UTC (rev 286452)
@@ -27,6 +27,8 @@
(Ilia)
- Fixed bug #48929 (Double \r\n after HTTP headers when "header" context
option is an array). (David Zülke)
+- Fixed bug #48912 (Namespace causes unexpected strict behaviour with
+ extract()). (Dmitry)
- Fixed bug #48899 (is_callable returns true even if method does not exist in
parent class). (Felipe)
- Fixed bug #48893 (Problems compiling with Curl). (Felipe)
Added: php/php-src/branches/PHP_5_3/Zend/tests/bug48912.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/tests/bug48912.phpt (rev 0)
+++ php/php-src/branches/PHP_5_3/Zend/tests/bug48912.phpt 2009-07-28 12:35:27 UTC (rev 286452)
@@ -0,0 +1,16 @@
+--TEST--
+Bug #48912 (Namespace causes unexpected strict behaviour with extract())
+--FILE--
+<?php
+namespace A;
+
+function test()
+{
+ extract(func_get_arg(0));
+}
+
+test(array('x' => 1));
+echo "ok\n";
+?>
+--EXPECT--
+ok
Modified: php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h 2009-07-28 12:26:16 UTC (rev 286451)
+++ php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h 2009-07-28 12:35:27 UTC (rev 286452)
@@ -2662,7 +2662,9 @@
} else {
zval *valptr;
- if (!(opline->extended_value & ZEND_ARG_SEND_SILENT)) {
+ if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
+ !(opline->extended_value & ZEND_ARG_SEND_SILENT) :
+ !ARG_MAY_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
zend_error(E_STRICT, "Only variables should be passed by reference");
}
ALLOC_ZVAL(valptr);
Modified: php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h 2009-07-28 12:26:16 UTC (rev 286451)
+++ php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h 2009-07-28 12:35:27 UTC (rev 286452)
@@ -8278,7 +8278,9 @@
} else {
zval *valptr;
- if (!(opline->extended_value & ZEND_ARG_SEND_SILENT)) {
+ if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
+ !(opline->extended_value & ZEND_ARG_SEND_SILENT) :
+ !ARG_MAY_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
zend_error(E_STRICT, "Only variables should be passed by reference");
}
ALLOC_ZVAL(valptr);
@@ -22128,7 +22130,9 @@
} else {
zval *valptr;
- if (!(opline->extended_value & ZEND_ARG_SEND_SILENT)) {
+ if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
+ !(opline->extended_value & ZEND_ARG_SEND_SILENT) :
+ !ARG_MAY_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
zend_error(E_STRICT, "Only variables should be passed by reference");
}
ALLOC_ZVAL(valptr);