From 52eb81b20eca0655da7ec01a830ce591a8f5d0cd Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Thu, 2 Feb 2012 13:56:21 +0000 Subject: [PATCH] Make sure to save the argument stack too for the case when eval fails. --- xdebug_handler_dbgp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xdebug_handler_dbgp.c b/xdebug_handler_dbgp.c index e48f6c369..252a3963b 100644 --- a/xdebug_handler_dbgp.c +++ b/xdebug_handler_dbgp.c @@ -1242,6 +1242,10 @@ static int xdebug_do_eval(char *eval_string, zval *ret_zval TSRMLS_DC) zend_op_array *original_active_op_array = EG(active_op_array); zend_execute_data *original_execute_data = EG(current_execute_data); int original_no_extensions = EG(no_extensions); +#if PHP_VERSION_ID >= 50300 + void **original_argument_stack_top = EG(argument_stack)->top; + void **original_argument_stack_end = EG(argument_stack)->end; +#endif /* Remember error reporting level */ old_error_reporting = EG(error_reporting); @@ -1263,6 +1267,10 @@ static int xdebug_do_eval(char *eval_string, zval *ret_zval TSRMLS_DC) EG(active_op_array) = original_active_op_array; EG(current_execute_data) = original_execute_data; EG(no_extensions) = original_no_extensions; +#if PHP_VERSION_ID >= 50300 + EG(argument_stack)->top = original_argument_stack_top; + EG(argument_stack)->end = original_argument_stack_end; +#endif return res; }