andrey          Sun Jul 11 14:18:05 2004 EDT

  Added files:                 
    /php-src/ext/standard/tests/general_functions       bug29038.phpt 

  Modified files:              
    /php-src/ext/standard       array.c 
  Log:
  fixing bug 29038:
  EXTR_PREFIX_SAME is prevented from creating a new variable when the key
  is a empty string. EXTR_PREFIX_ALL is also prevented from doing that,
  but works for numbers.
  
  
http://cvs.php.net/diff.php/php-src/ext/standard/array.c?r1=1.263&r2=1.264&ty=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.263 php-src/ext/standard/array.c:1.264
--- php-src/ext/standard/array.c:1.263  Sun Jul 11 11:23:57 2004
+++ php-src/ext/standard/array.c        Sun Jul 11 14:18:05 2004
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.263 2004/07/11 15:23:57 iliaa Exp $ */
+/* $Id: array.c,v 1.264 2004/07/11 18:18:05 andrey Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -1342,7 +1342,7 @@
                                /* break omitted intentionally */
 
                        case EXTR_PREFIX_ALL:
-                               if (final_name.len == 0) {
+                               if (final_name.len == 0 && var_name_len != 0) {
                                        smart_str_appendl(&final_name, 
Z_STRVAL_PP(prefix), Z_STRLEN_PP(prefix));
                                        smart_str_appendc(&final_name, '_');
                                        smart_str_appendl(&final_name, var_name, 
var_name_len);

http://cvs.php.net/co.php/php-src/ext/standard/tests/general_functions/bug29038.phpt?r=1.1&p=1
Index: php-src/ext/standard/tests/general_functions/bug29038.phpt
+++ php-src/ext/standard/tests/general_functions/bug29038.phpt
--TEST--
bug #29039 (extract(), EXTR_PREFIX_SAME option prefixes empty strings)
--FILE--
<?php
function f1() {
  $c = extract(array("" => 1),EXTR_PREFIX_SAME,"prefix");
  echo "Extracted:";
  var_dump($c);
  print_r(get_defined_vars());
}
function f2() {
  $a = 1;
  $c = extract(array("a" => 1),EXTR_PREFIX_SAME,"prefix");
  echo "Extracted:";
  var_dump($c);
  print_r(get_defined_vars());
}
function f3() {
  $a = 1;
  $c = extract(array("a" => 1),EXTR_PREFIX_ALL,"prefix");
  echo "Extracted:";
  var_dump($c);
  print_r(get_defined_vars());
}
function f4() {
  $c = extract(array("" => 1),EXTR_PREFIX_ALL,"prefix");
  echo "Extracted:";
  var_dump($c);
  print_r(get_defined_vars());
}
function f5() {
  $c = extract(array("111" => 1),EXTR_PREFIX_ALL,"prefix");
  echo "Extracted:";
  var_dump($c);
  print_r(get_defined_vars());
}

f1();
f2();
f3();
f4();
f5();
?>
--EXPECT--
Extracted:int(0)
Array
(
    [c] => 0
)
Extracted:int(1)
Array
(
    [a] => 1
    [prefix_a] => 1
    [c] => 1
)
Extracted:int(1)
Array
(
    [a] => 1
    [prefix_a] => 1
    [c] => 1
)
Extracted:int(0)
Array
(
    [c] => 0
)
Extracted:int(1)
Array
(
    [prefix_111] => 1
    [c] => 1
)

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

Reply via email to