int phpdbg_interactive(TSRMLS_D) /* {{{ */
{
size_t cmd_len;
- int cmd_type;
+ int ret = SUCCESS;
#ifndef HAVE_LIBREADLINE
char cmd[PHPDBG_MAX_CMD];
add_history(cmd);
#endif
- switch (cmd_type = phpdbg_do_cmd(phpdbg_prompt_commands, cmd, cmd_len TSRMLS_CC)) {
+ switch (ret = phpdbg_do_cmd(phpdbg_prompt_commands, cmd, cmd_len TSRMLS_CC)) {
case FAILURE:
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
phpdbg_error("Failed to execute %s!", cmd);
if (!EG(in_execution)) {
phpdbg_error("Not running");
}
-
-#ifdef HAVE_LIBREADLINE
- if (cmd) {
- free(cmd);
- }
-#endif
- return cmd_type;
+ goto out;
}
}
}
#endif
} else if (PHPDBG_G(last)) {
- return PHPDBG_G(last)->handler(
- PHPDBG_G(last_params), PHPDBG_G(last_params_len) TSRMLS_CC);
+ ret = PHPDBG_G(last)->handler(
+ PHPDBG_G(last_params), PHPDBG_G(last_params_len) TSRMLS_CC);
+
+ goto out;
}
}
-
+out:
#ifdef HAVE_LIBREADLINE
if (cmd) {
free(cmd);
}
#endif
- return SUCCESS;
+ return ret;
} /* }}} */
void phpdbg_print_opline(zend_execute_data *execute_data, zend_bool ignore_flags TSRMLS_DC) /* {{{ */