From: krakjoe Date: Wed, 20 Nov 2013 16:32:30 +0000 (+0000) Subject: fix eval X-Git-Tag: php-5.6.0alpha1~110^2~166 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=63c0db3a1d2f35c14d0c39fffe8343b4aa49e477;p=php fix eval --- diff --git a/phpdbg_prompt.c b/phpdbg_prompt.c index 3d5d42fcd5..baa303e717 100644 --- a/phpdbg_prompt.c +++ b/phpdbg_prompt.c @@ -485,45 +485,39 @@ out: PHPDBG_COMMAND(eval) /* {{{ */ { - switch (param->type) { - case STR_PARAM: { - zend_bool stepping = (PHPDBG_G(flags) & PHPDBG_IS_STEPPING); - zval retval; - char *code = NULL; - - PHPDBG_G(flags) &= ~ PHPDBG_IS_STEPPING; - - if (input && input->start) { - code = (char*) input->start; - - if (memcmp( - code, "eval", sizeof("eval")-1) == SUCCESS) { - code += sizeof("eval")-1; - } else code += sizeof("E")-1; - - while (code && isspace(*code)) { - code++; - } - } else code = param->str; - - /* disable stepping while eval() in progress */ - PHPDBG_G(flags) |= PHPDBG_IN_EVAL; - if (zend_eval_stringl(code, strlen(code), - &retval, "eval()'d code" TSRMLS_CC) == SUCCESS) { - zend_print_zval_r( - &retval, 0 TSRMLS_CC); - phpdbg_writeln(EMPTY); - zval_dtor(&retval); - } - PHPDBG_G(flags) &= ~PHPDBG_IN_EVAL; - - /* switch stepping back on */ - if (stepping) { - PHPDBG_G(flags) |= PHPDBG_IS_STEPPING; - } - } break; + zend_bool stepping = (PHPDBG_G(flags) & PHPDBG_IS_STEPPING); + zval retval; + char *code = NULL; + + PHPDBG_G(flags) &= ~ PHPDBG_IS_STEPPING; + + if (input && input->start) { + code = (char*) input->start; + + if (memcmp( + code, "eval", sizeof("eval")-1) == SUCCESS) { + code += sizeof("eval")-1; + } else code += sizeof("E")-1; + + while (code && isspace(*code)) { + code++; + } + } else phpdbg_error("Nothing to execute"); + + /* disable stepping while eval() in progress */ + PHPDBG_G(flags) |= PHPDBG_IN_EVAL; + if (zend_eval_stringl(code, strlen(code), + &retval, "eval()'d code" TSRMLS_CC) == SUCCESS) { + zend_print_zval_r( + &retval, 0 TSRMLS_CC); + phpdbg_writeln(EMPTY); + zval_dtor(&retval); + } + PHPDBG_G(flags) &= ~PHPDBG_IN_EVAL; - phpdbg_default_switch_case(); + /* switch stepping back on */ + if (stepping) { + PHPDBG_G(flags) |= PHPDBG_IS_STEPPING; } return SUCCESS;