@@ -834,7 +834,7 @@ static void php_sapi_phpdbg_log_message(char *message) /* {{{ */
834
834
}
835
835
836
836
do {
837
- switch (phpdbg_interactive (1 )) {
837
+ switch (phpdbg_interactive (1 , NULL )) {
838
838
case PHPDBG_LEAVE :
839
839
case PHPDBG_FINISH :
840
840
case PHPDBG_UNTIL :
@@ -942,7 +942,7 @@ static inline void php_sapi_phpdbg_flush(void *context) /* {{{ */
942
942
} /* }}} */
943
943
944
944
/* copied from sapi/cli/php_cli.c cli_register_file_handles */
945
- static void phpdbg_register_file_handles (void ) /* {{{ */
945
+ void phpdbg_register_file_handles (void ) /* {{{ */
946
946
{
947
947
zval zin , zout , zerr ;
948
948
php_stream * s_in , * s_out , * s_err ;
@@ -974,18 +974,21 @@ static void phpdbg_register_file_handles(void) /* {{{ */
974
974
ic .flags = CONST_CS ;
975
975
ic .name = zend_string_init (ZEND_STRL ("STDIN" ), 0 );
976
976
ic .module_number = 0 ;
977
+ zend_hash_del (EG (zend_constants ), ic .name );
977
978
zend_register_constant (& ic );
978
979
979
980
oc .value = zout ;
980
981
oc .flags = CONST_CS ;
981
982
oc .name = zend_string_init (ZEND_STRL ("STDOUT" ), 0 );
982
983
oc .module_number = 0 ;
984
+ zend_hash_del (EG (zend_constants ), oc .name );
983
985
zend_register_constant (& oc );
984
986
985
987
ec .value = zerr ;
986
988
ec .flags = CONST_CS ;
987
989
ec .name = zend_string_init (ZEND_STRL ("STDERR" ), 0 );
988
990
ec .module_number = 0 ;
991
+ zend_hash_del (EG (zend_constants ), ec .name );
989
992
zend_register_constant (& ec );
990
993
}
991
994
/* }}} */
@@ -1318,6 +1321,7 @@ int main(int argc, char **argv) /* {{{ */
1318
1321
zend_bool ini_ignore ;
1319
1322
char * ini_override ;
1320
1323
char * exec = NULL ;
1324
+ char * first_command = NULL ;
1321
1325
char * init_file ;
1322
1326
size_t init_file_len ;
1323
1327
zend_bool init_file_default ;
@@ -1800,7 +1804,6 @@ int main(int argc, char **argv) /* {{{ */
1800
1804
/* set default prompt */
1801
1805
phpdbg_set_prompt (PHPDBG_DEFAULT_PROMPT );
1802
1806
1803
- /* refactor to preserve run commands on force run command */
1804
1807
{
1805
1808
php_stream_wrapper * wrapper = zend_hash_str_find_ptr (php_stream_get_url_stream_wrappers_hash (), ZEND_STRL ("php" ));
1806
1809
PHPDBG_G (orig_url_wrap_php ) = wrapper -> wops -> stream_opener ;
@@ -1886,7 +1889,11 @@ int main(int argc, char **argv) /* {{{ */
1886
1889
PHPDBG_G (flags ) |= PHPDBG_IS_INTERACTIVE ;
1887
1890
}
1888
1891
zend_try {
1889
- PHPDBG_COMMAND_HANDLER (run )(NULL );
1892
+ if (first_command ) {
1893
+ phpdbg_interactive (1 , estrdup (first_command ));
1894
+ } else {
1895
+ PHPDBG_COMMAND_HANDLER (run )(NULL );
1896
+ }
1890
1897
} zend_end_try ();
1891
1898
if (quit_immediately ) {
1892
1899
/* if -r is on the command line more than once just quit */
@@ -1897,7 +1904,7 @@ int main(int argc, char **argv) /* {{{ */
1897
1904
}
1898
1905
1899
1906
CG (unclean_shutdown ) = 0 ;
1900
- phpdbg_interactive (1 );
1907
+ phpdbg_interactive (1 , NULL );
1901
1908
} zend_catch {
1902
1909
if ((PHPDBG_G (flags ) & PHPDBG_IS_CLEANING )) {
1903
1910
char * bp_tmp_str ;
@@ -1955,6 +1962,11 @@ int main(int argc, char **argv) /* {{{ */
1955
1962
phpdbg_out :
1956
1963
#endif
1957
1964
1965
+ if (first_command ) {
1966
+ free (first_command );
1967
+ first_command = NULL ;
1968
+ }
1969
+
1958
1970
if (cleaning <= 0 ) {
1959
1971
PHPDBG_G (flags ) &= ~PHPDBG_IS_CLEANING ;
1960
1972
cleaning = -1 ;
@@ -2006,13 +2018,17 @@ int main(int argc, char **argv) /* {{{ */
2006
2018
settings -> input_buflen = PHPDBG_G (input_buflen );
2007
2019
memcpy (settings -> input_buffer , PHPDBG_G (input_buffer ), settings -> input_buflen );
2008
2020
settings -> flags = PHPDBG_G (flags ) & PHPDBG_PRESERVE_FLAGS_MASK ;
2021
+ first_command = PHPDBG_G (cur_command );
2009
2022
} else {
2010
2023
if (PHPDBG_G (prompt )[0 ]) {
2011
2024
free (PHPDBG_G (prompt )[0 ]);
2012
2025
}
2013
2026
if (PHPDBG_G (prompt )[1 ]) {
2014
2027
free (PHPDBG_G (prompt )[1 ]);
2015
2028
}
2029
+ if (PHPDBG_G (cur_command )) {
2030
+ free (PHPDBG_G (cur_command ));
2031
+ }
2016
2032
}
2017
2033
2018
2034
/* hack to restore mm_heap->use_custom_heap in order to receive memory leak info */
0 commit comments