mirror of
https://github.com/php/php-src.git
synced 2025-08-19 17:04:47 +02:00
- ws+cs (prepare syncing some parts to PHP_5_3)
This commit is contained in:
parent
7c64b0d1bc
commit
30230074ba
1 changed files with 12 additions and 13 deletions
|
@ -1398,8 +1398,7 @@ PHP_FUNCTION(extract)
|
||||||
int extract_refs = 0;
|
int extract_refs = 0;
|
||||||
HashPosition pos;
|
HashPosition pos;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|lz/", &var_array,
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|lz/", &var_array, &extract_type, &prefix) == FAILURE) {
|
||||||
&extract_type, &prefix) == FAILURE) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1411,8 +1410,7 @@ PHP_FUNCTION(extract)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extract_type > EXTR_SKIP && extract_type <= EXTR_PREFIX_IF_EXISTS
|
if (extract_type > EXTR_SKIP && extract_type <= EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) {
|
||||||
&& ZEND_NUM_ARGS() < 3) {
|
|
||||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "specified extract type requires the prefix parameter");
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "specified extract type requires the prefix parameter");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1435,7 +1433,8 @@ PHP_FUNCTION(extract)
|
||||||
var_exists = 0;
|
var_exists = 0;
|
||||||
|
|
||||||
if (key_type == HASH_KEY_IS_STRING ||
|
if (key_type == HASH_KEY_IS_STRING ||
|
||||||
key_type == HASH_KEY_IS_UNICODE) {
|
key_type == HASH_KEY_IS_UNICODE
|
||||||
|
) {
|
||||||
if (key_type == HASH_KEY_IS_STRING) {
|
if (key_type == HASH_KEY_IS_STRING) {
|
||||||
key_type = IS_STRING;
|
key_type = IS_STRING;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1443,9 +1442,10 @@ PHP_FUNCTION(extract)
|
||||||
}
|
}
|
||||||
var_name_len--;
|
var_name_len--;
|
||||||
var_exists = zend_u_hash_exists(EG(active_symbol_table), key_type, var_name, var_name_len + 1);
|
var_exists = zend_u_hash_exists(EG(active_symbol_table), key_type, var_name, var_name_len + 1);
|
||||||
} else if (key_type == HASH_KEY_IS_LONG &&
|
} else if ( key_type == HASH_KEY_IS_LONG &&
|
||||||
(extract_type == EXTR_PREFIX_ALL ||
|
(extract_type == EXTR_PREFIX_ALL ||
|
||||||
extract_type == EXTR_PREFIX_INVALID)) {
|
extract_type == EXTR_PREFIX_INVALID)
|
||||||
|
) {
|
||||||
zval num;
|
zval num;
|
||||||
|
|
||||||
ZVAL_LONG(&num, num_key);
|
ZVAL_LONG(&num, num_key);
|
||||||
|
@ -1463,12 +1463,13 @@ PHP_FUNCTION(extract)
|
||||||
/* break omitted intentionally */
|
/* break omitted intentionally */
|
||||||
|
|
||||||
case EXTR_OVERWRITE:
|
case EXTR_OVERWRITE:
|
||||||
|
/* GLOBALS protection */
|
||||||
if (var_exists &&
|
if (var_exists &&
|
||||||
var_name_len == sizeof("GLOBALS") &&
|
var_name_len == sizeof("GLOBALS") &&
|
||||||
ZEND_U_EQUAL(key_type, var_name, var_name_len-1, "GLOBALS", sizeof("GLOBALS")-1)) {
|
ZEND_U_EQUAL(key_type, var_name, var_name_len-1, "GLOBALS", sizeof("GLOBALS")-1)
|
||||||
|
) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ZVAL_ZSTRL(&final_name, key_type, var_name, var_name_len, 1);
|
ZVAL_ZSTRL(&final_name, key_type, var_name, var_name_len, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1540,7 +1541,6 @@ PHP_FUNCTION(extract)
|
||||||
|
|
||||||
ZEND_U_SET_SYMBOL_WITH_LENGTH(EG(active_symbol_table), Z_TYPE(final_name), Z_UNIVAL(final_name), Z_UNILEN(final_name)+1, data, 1, 0);
|
ZEND_U_SET_SYMBOL_WITH_LENGTH(EG(active_symbol_table), Z_TYPE(final_name), Z_UNIVAL(final_name), Z_UNILEN(final_name)+1, data, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
zval_dtor(&final_name);
|
zval_dtor(&final_name);
|
||||||
|
@ -1552,8 +1552,7 @@ PHP_FUNCTION(extract)
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ php_compact_var */
|
static void php_compact_var(HashTable *eg_active_symbol_table, zval *return_value, zval *entry) /* {{{ */
|
||||||
static void php_compact_var(HashTable *eg_active_symbol_table, zval *return_value, zval *entry)
|
|
||||||
{
|
{
|
||||||
zstr key;
|
zstr key;
|
||||||
int key_len;
|
int key_len;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue