@@ -866,7 +866,7 @@ static void php_sapi_phpdbg_log_message(char *message, int syslog_type_int) /* {
866866}
867867
868868do {
869- switch (phpdbg_interactive (1 )) {
869+ switch (phpdbg_interactive (1 , NULL )) {
870870case PHPDBG_LEAVE :
871871case PHPDBG_FINISH :
872872case PHPDBG_UNTIL :
@@ -972,7 +972,7 @@ static inline void php_sapi_phpdbg_flush(void *context) /* {{{ */
972972}/* }}} */
973973
974974/* copied from sapi/cli/php_cli.c cli_register_file_handles */
975- static void phpdbg_register_file_handles (void )/* {{{ */
975+ void phpdbg_register_file_handles (void )/* {{{ */
976976{
977977zval zin ,zout ,zerr ;
978978php_stream * s_in ,* s_out ,* s_err ;
@@ -1004,18 +1004,21 @@ static void phpdbg_register_file_handles(void) /* {{{ */
10041004ic .flags = CONST_CS ;
10051005ic .name = zend_string_init (ZEND_STRL ("STDIN" ),0 );
10061006ic .module_number = 0 ;
1007+ zend_hash_del (EG (zend_constants ),ic .name );
10071008zend_register_constant (& ic );
10081009
10091010oc .value = zout ;
10101011oc .flags = CONST_CS ;
10111012oc .name = zend_string_init (ZEND_STRL ("STDOUT" ),0 );
10121013oc .module_number = 0 ;
1014+ zend_hash_del (EG (zend_constants ),oc .name );
10131015zend_register_constant (& oc );
10141016
10151017ec .value = zerr ;
10161018ec .flags = CONST_CS ;
10171019ec .name = zend_string_init (ZEND_STRL ("STDERR" ),0 );
10181020ec .module_number = 0 ;
1021+ zend_hash_del (EG (zend_constants ),ec .name );
10191022zend_register_constant (& ec );
10201023}
10211024/* }}} */
@@ -1344,6 +1347,7 @@ int main(int argc, char **argv) /* {{{ */
13441347zend_bool ini_ignore ;
13451348char * ini_override ;
13461349char * exec = NULL ;
1350+ char * first_command = NULL ;
13471351char * init_file ;
13481352size_t init_file_len ;
13491353zend_bool init_file_default ;
@@ -1813,7 +1817,6 @@ int main(int argc, char **argv) /* {{{ */
18131817/* set default prompt */
18141818phpdbg_set_prompt (PHPDBG_DEFAULT_PROMPT );
18151819
1816- /* refactor to preserve run commands on force run command */
18171820{
18181821php_stream_wrapper * wrapper = zend_hash_str_find_ptr (php_stream_get_url_stream_wrappers_hash (),ZEND_STRL ("php" ));
18191822PHPDBG_G (orig_url_wrap_php )= wrapper -> wops -> stream_opener ;
@@ -1899,7 +1902,11 @@ int main(int argc, char **argv) /* {{{ */
18991902PHPDBG_G (flags ) |=PHPDBG_IS_INTERACTIVE ;
19001903}
19011904zend_try {
1902- PHPDBG_COMMAND_HANDLER (run )(NULL );
1905+ if (first_command ) {
1906+ phpdbg_interactive (1 ,estrdup (first_command ));
1907+ }else {
1908+ PHPDBG_COMMAND_HANDLER (run )(NULL );
1909+ }
19031910}zend_end_try ();
19041911if (quit_immediately ) {
19051912/* if -r is on the command line more than once just quit */
@@ -1910,7 +1917,7 @@ int main(int argc, char **argv) /* {{{ */
19101917}
19111918
19121919CG (unclean_shutdown )= 0 ;
1913- phpdbg_interactive (1 );
1920+ phpdbg_interactive (1 , NULL );
19141921}zend_catch {
19151922if ((PHPDBG_G (flags )& PHPDBG_IS_CLEANING )) {
19161923char * bp_tmp_str ;
@@ -1968,6 +1975,11 @@ int main(int argc, char **argv) /* {{{ */
19681975phpdbg_out :
19691976#endif
19701977
1978+ if (first_command ) {
1979+ free (first_command );
1980+ first_command = NULL ;
1981+ }
1982+
19711983if (cleaning <=0 ) {
19721984PHPDBG_G (flags ) &= ~PHPDBG_IS_CLEANING ;
19731985cleaning = -1 ;
@@ -2023,13 +2035,17 @@ int main(int argc, char **argv) /* {{{ */
20232035settings -> input_buflen = PHPDBG_G (input_buflen );
20242036memcpy (settings -> input_buffer ,PHPDBG_G (input_buffer ),settings -> input_buflen );
20252037settings -> flags = PHPDBG_G (flags )& PHPDBG_PRESERVE_FLAGS_MASK ;
2038+ first_command = PHPDBG_G (cur_command );
20262039}else {
20272040if (PHPDBG_G (prompt )[0 ]) {
20282041free (PHPDBG_G (prompt )[0 ]);
20292042}
20302043if (PHPDBG_G (prompt )[1 ]) {
20312044free (PHPDBG_G (prompt )[1 ]);
20322045}
2046+ if (PHPDBG_G (cur_command )) {
2047+ free (PHPDBG_G (cur_command ));
2048+ }
20332049}
20342050
20352051if (exit_status == 0 ) {