RE: [PHP-CVS] cvs: php-src / NEWS /ext/standard array.c /ext/standard/tests/array bug31158.phpt
| From: | Dmitry Stogov | Date: | Mon, 04 Jul 2005 13:08:32 +0000 |
| Subject: | RE: [PHP-CVS] cvs: php-src / NEWS /ext/standard array.c /ext/standard/tests/array bug31158.phpt | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-32677@lists.php.net to get a copy of this message | ||
Hi Jani,
I always do
make test.
And these tests work fine for me.
May be this is xdebug related bug again.
Thanks. Dmitry.
> -----Original Message-----
> From: Jani Taskinen [mailto:sniper@iki.fi]
> Sent: Monday, July 04, 2005 4:40 PM
> To: Dmitry Stogov
> Cc: php-cvs@lists.php.net
> Subject: Re: [PHP-CVS] cvs: php-src / NEWS /ext/standard
> array.c /ext/standard/tests/array bug31158.phpt
>
>
>
> Not related to this bug but can you PLEASE run 'make test'
> after each and every fix you make? Especially when you touch
> engine stuff..
>
> Now these tests have started to fail:
>
> tests/lang/013.phpt
> tests/lang/014.phpt
> tests/lang/018.phpt
>
> All eval() related..
>
> --Jani
>
>
> On Mon, 4 Jul 2005, Dmitry Stogov wrote:
>
> > dmitry Mon Jul 4 06:00:39 2005 EDT
> >
> > Added files:
> > /php-src/ext/standard/tests/array bug31158.phpt
> >
> > Modified files:
> > /php-src NEWS
> > /php-src/ext/standard array.c
> > Log:
> > Fixed bug #31158 (array_splice on $GLOBALS crashes)
> >
> >
> >
> > http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1977&r2=1.1978&ty=u
> > Index: php-src/NEWS
> > diff -u php-src/NEWS:1.1977 php-src/NEWS:1.1978
> > --- php-src/NEWS:1.1977 Mon Jul 4 03:48:16 2005
> > +++ php-src/NEWS Mon Jul 4 06:00:34 2005
> > @@ -20,6 +20,7 @@
> > overloaded (__get)). (Dmitry)
> > - Fixed bug #31358 (Older GCC versions do not provide
> portable va_copy()).
> > (Jani)
> > +- Fixed bug #31158 (array_splice on $GLOBALS crashes). (Dmitry)
> > - Fixed bug #30828 (debug_backtrace() reports incorrect
> class in overridden
> > methods). (Dmitry)
> > - Fixed bug #30519 (Interface not existing says Class not found).
> > (Dmitry)
> >
> http://cvs.php.net/diff.php/php-src/ext/standard/array.c?r1=1.
> 305&r2=1.306&ty=u
> > Index: php-src/ext/standard/array.c
> > diff -u php-src/ext/standard/array.c:1.305
> php-src/ext/standard/array.c:1.306
> > --- php-src/ext/standard/array.c:1.305 Thu Jun 30 07:15:00 2005
> > +++ php-src/ext/standard/array.c Mon Jul 4 06:00:38 2005
> > @@ -21,7 +21,7 @@
> >
> >
> +-------------------------------------------------------------
> ---------+
> > */
> >
> > -/* $Id: array.c,v 1.305 2005/06/30 11:15:00 sniper Exp $ */
> > +/* $Id: array.c,v 1.306 2005/07/04 10:00:38 dmitry Exp $ */
> >
> > #include "php.h"
> > #include "php_ini.h"
> > @@ -2060,8 +2060,11 @@
> > hashtable and replace it with new one */
> > new_hash = php_splice(Z_ARRVAL_P(stack), 0, 0,
> &args[1], argc-1, NULL);
> > zend_hash_destroy(Z_ARRVAL_P(stack));
> > - FREE_HASHTABLE(Z_ARRVAL_P(stack));
> > - Z_ARRVAL_P(stack) = new_hash;
> > + if (Z_ARRVAL_P(stack) == &EG(symbol_table)) {
> > + zend_reset_all_cv(&EG(symbol_table) TSRMLS_CC);
> > + }
> > + *Z_ARRVAL_P(stack) = *new_hash;
> > + FREE_HASHTABLE(new_hash);
> >
> > /* Clean up and return the number of elements in the stack */
> > efree(args);
> > @@ -2137,8 +2140,11 @@
> >
> > /* Replace input array's hashtable with the new one */
> > zend_hash_destroy(Z_ARRVAL_P(array));
> > - efree(Z_ARRVAL_P(array));
> > - Z_ARRVAL_P(array) = new_hash;
> > + if (Z_ARRVAL_P(array) == &EG(symbol_table)) {
> > + zend_reset_all_cv(&EG(symbol_table) TSRMLS_CC);
> > + }
> > + *Z_ARRVAL_P(array) = *new_hash;
> > + FREE_HASHTABLE(new_hash);
> >
> > /* Clean up */
> > if (argc == 4)
> > @@ -2670,8 +2676,11 @@
> >
> > /* Copy the result hash into return value */
> > zend_hash_destroy(Z_ARRVAL_P(return_value));
> > - efree(Z_ARRVAL_P(return_value));
> > - Z_ARRVAL_P(return_value) = new_hash;
> > + if (Z_ARRVAL_P(return_value) == &EG(symbol_table)) {
> > + zend_reset_all_cv(&EG(symbol_table) TSRMLS_CC);
> > + }
> > + *Z_ARRVAL_P(return_value) = *new_hash;
> > + FREE_HASHTABLE(new_hash);
> >
> > /* Clean up */
> > efree(pads);
> >
> >
>
> http://cvs.php.net/co.php/php-src/ext/standard/tests/array/bug31158.ph
> > pt?r=1.1&p=1
> > Index: php-src/ext/standard/tests/array/bug31158.phpt
> > +++ php-src/ext/standard/tests/array/bug31158.phpt
> > --TEST--
> > Bug #31158 (array_splice on $GLOBALS crashes)
> > --FILE--
> > <?php
> > function __(){
> > $GLOBALS['a'] = "bug\n"; array_splice($GLOBALS,0,count($GLOBALS));
> > /* All global variables including $GLOBALS are removed */
> > echo $GLOBALS['a'];
> > }
> > __();
> > echo "ok\n";
> > ?>
> > --EXPECTF--
> > Notice: Undefined variable: GLOBALS in %sbug31158.php on line 6
> > ok
> >
> >
>
> --
> Donate @ http://pecl.php.net/wishlist.php/sniper
>
>