andrei Tue Dec 5 23:17:06 2006 UTC Modified files: /php-src/ext/standard array.c Log: extract() should convert keys using runtime encoding. http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.395&r2=1.396&diff_format=u Index: php-src/ext/standard/array.c diff -u php-src/ext/standard/array.c:1.395 php-src/ext/standard/array.c:1.396 --- php-src/ext/standard/array.c:1.395 Wed Nov 22 10:58:11 2006 +++ php-src/ext/standard/array.c Tue Dec 5 23:17:06 2006 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.395 2006/11/22 10:58:11 tony2001 Exp $ */ +/* $Id: array.c,v 1.396 2006/12/05 23:17:06 andrei Exp $ */ #include "php.h" #include "php_ini.h" @@ -1427,7 +1427,7 @@ break; } - ZVAL_TEXTL(&final_name, var_name, var_name_len, 1); + ZVAL_ZSTRL(&final_name, var_name, var_name_len, key_type, 1); break; case EXTR_PREFIX_IF_EXISTS: @@ -1438,7 +1438,7 @@ case EXTR_PREFIX_SAME: if (!var_exists && var_name_len != 0) { - ZVAL_TEXTL(&final_name, var_name, var_name_len, 1); + ZVAL_ZSTRL(&final_name, var_name, var_name_len, key_type, 1); } /* break omitted intentionally */ @@ -1453,18 +1453,24 @@ if (!php_valid_var_name(var_name, var_name_len, key_type)) { php_prefix_varname(&final_name, prefix, var_name, var_name_len, key_type TSRMLS_CC); } else { - ZVAL_TEXTL(&final_name, var_name, var_name_len, 1); + ZVAL_ZSTRL(&final_name, var_name, var_name_len, key_type, 1); } } break; default: if (!var_exists) { - ZVAL_TEXTL(&final_name, var_name, var_name_len, 1); + ZVAL_ZSTRL(&final_name, var_name, var_name_len, key_type, 1); } break; } + if (UG(unicode) && Z_TYPE(final_name) == IS_STRING) { + convert_to_unicode(&final_name); + } else if (!UG(unicode) && Z_TYPE(final_name) == IS_UNICODE) { + convert_to_string(&final_name); + } + if (Z_TYPE(final_name) != IS_NULL) { if (extract_refs) { zval **orig_var;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php