mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Added "argv" and "argc" as known strings.
Fixed incorrect "argc" update and corresponding phpdbg test.
This commit is contained in:
parent
64c5e38adf
commit
7cc6f60134
@ -419,6 +419,8 @@ EMPTY_SWITCH_DEFAULT_CASE()
|
||||
_(ZEND_STR_RESOURCE, "resource") \
|
||||
_(ZEND_STR_CLOSED_RESOURCE, "resource (closed)") \
|
||||
_(ZEND_STR_NAME, "name") \
|
||||
_(ZEND_STR_ARGV, "argv") \
|
||||
_(ZEND_STR_ARGC, "argc") \
|
||||
|
||||
|
||||
typedef enum _zend_known_string_id {
|
||||
|
@ -4361,8 +4361,8 @@ PHP_FUNCTION(getopt)
|
||||
* in order to be on the safe side, even though it is also available
|
||||
* from the symbol table. */
|
||||
if ((Z_TYPE(PG(http_globals)[TRACK_VARS_SERVER]) == IS_ARRAY || zend_is_auto_global_str(ZEND_STRL("_SERVER"))) &&
|
||||
((args = zend_hash_str_find_ind(Z_ARRVAL_P(&PG(http_globals)[TRACK_VARS_SERVER]), "argv", sizeof("argv")-1)) != NULL ||
|
||||
(args = zend_hash_str_find_ind(&EG(symbol_table), "argv", sizeof("argv")-1)) != NULL)
|
||||
((args = zend_hash_find_ind(Z_ARRVAL_P(&PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGV))) != NULL ||
|
||||
(args = zend_hash_find_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV))) != NULL)
|
||||
) {
|
||||
int pos = 0;
|
||||
zval *entry;
|
||||
|
@ -604,13 +604,13 @@ PHPAPI void php_build_argv(char *s, zval *track_vars_array)
|
||||
|
||||
if (SG(request_info).argc) {
|
||||
Z_ADDREF(arr);
|
||||
zend_hash_str_update(&EG(symbol_table), "argv", sizeof("argv")-1, &arr);
|
||||
zend_hash_str_add(&EG(symbol_table), "argc", sizeof("argc")-1, &argc);
|
||||
zend_hash_update(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV), &arr);
|
||||
zend_hash_update(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC), &argc);
|
||||
}
|
||||
if (track_vars_array && Z_TYPE_P(track_vars_array) == IS_ARRAY) {
|
||||
Z_ADDREF(arr);
|
||||
zend_hash_str_update(Z_ARRVAL_P(track_vars_array), "argv", sizeof("argv")-1, &arr);
|
||||
zend_hash_str_update(Z_ARRVAL_P(track_vars_array), "argc", sizeof("argc")-1, &argc);
|
||||
zend_hash_update(Z_ARRVAL_P(track_vars_array), ZSTR_KNOWN(ZEND_STR_ARGV), &arr);
|
||||
zend_hash_update(Z_ARRVAL_P(track_vars_array), ZSTR_KNOWN(ZEND_STR_ARGC), &argc);
|
||||
}
|
||||
zval_ptr_dtor_nogc(&arr);
|
||||
}
|
||||
@ -781,11 +781,11 @@ static zend_bool php_auto_globals_create_server(zend_string *name)
|
||||
if (SG(request_info).argc) {
|
||||
zval *argc, *argv;
|
||||
|
||||
if ((argc = zend_hash_str_find_ind(&EG(symbol_table), "argc", sizeof("argc")-1)) != NULL &&
|
||||
(argv = zend_hash_str_find_ind(&EG(symbol_table), "argv", sizeof("argv")-1)) != NULL) {
|
||||
if ((argc = zend_hash_find_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC))) != NULL &&
|
||||
(argv = zend_hash_find_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV))) != NULL) {
|
||||
Z_ADDREF_P(argv);
|
||||
zend_hash_str_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), "argv", sizeof("argv")-1, argv);
|
||||
zend_hash_str_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), "argc", sizeof("argc")-1, argc);
|
||||
zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGV), argv);
|
||||
zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGC), argc);
|
||||
}
|
||||
} else {
|
||||
php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
|
||||
|
@ -21,7 +21,7 @@ array(5) {
|
||||
string(1) "3"
|
||||
}
|
||||
[Script ended normally]
|
||||
prompt> int(5)
|
||||
prompt> int(4)
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(%d) "%s"
|
||||
|
Loading…
Reference in New Issue
Block a user