- ws+cs (prepare syncing some parts to PHP_5_3)

This commit is contained in:
Jani Taskinen 2007-09-30 05:15:35 +00:00
parent 7c64b0d1bc
commit 30230074ba

View file

@ -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 {
@ -1445,7 +1444,8 @@ PHP_FUNCTION(extract)
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;