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