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