shire           Tue Dec 19 08:02:48 2006 UTC

  Modified files:              
    /php-src/ext/standard       array.c 
    /php-src/ext/standard/tests/array   bug30074.phpt 
  Log:
  -Fixed bug #30074 (apparent symbol table error with extract($blah, 
EXTR_REFS)) 
  # appoligies, I did this in reverse (applied to PHP_5_2) I should have MFH.  
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.397&r2=1.398&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.397 php-src/ext/standard/array.c:1.398
--- php-src/ext/standard/array.c:1.397  Wed Dec  6 17:42:47 2006
+++ php-src/ext/standard/array.c        Tue Dec 19 08:02:48 2006
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.397 2006/12/06 17:42:47 tony2001 Exp $ */
+/* $Id: array.c,v 1.398 2006/12/19 08:02:48 shire Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -1492,7 +1492,7 @@
 
                                        *orig_var = *entry;
                                } else {
-                                       if (var_array->refcount > 1) {
+                                       if (var_array->refcount > 1 || *entry 
== EG(uninitialized_zval_ptr)) {
                                                
SEPARATE_ZVAL_TO_MAKE_IS_REF(entry);
                                        } else {
                                                (*entry)->is_ref = 1;
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/bug30074.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/standard/tests/array/bug30074.phpt
diff -u /dev/null php-src/ext/standard/tests/array/bug30074.phpt:1.2
--- /dev/null   Tue Dec 19 08:02:48 2006
+++ php-src/ext/standard/tests/array/bug30074.phpt      Tue Dec 19 08:02:48 2006
@@ -0,0 +1,15 @@
+--TEST--
+Bug #30074 (EG(uninitialized_zval_ptr) gets set to reference using EXTR_REFS, 
affecting later values)
+--FILE--
+<?php
+error_reporting(E_ALL & ~E_NOTICE);   // We don't want the notice for 
$undefined
+$result = extract(array('a'=>$undefined), EXTR_REFS); 
+var_dump(array($a));
+echo "Done\n";
+?>
+--EXPECT--
+array(1) {
+  [0]=>
+  NULL
+}
+Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to