]> granicus.if.org Git - php/commitdiff
fix infruritating segfault
authorkrakjoe <joe.watkins@live.co.uk>
Sat, 23 Nov 2013 14:25:45 +0000 (14:25 +0000)
committerkrakjoe <joe.watkins@live.co.uk>
Sat, 23 Nov 2013 14:25:45 +0000 (14:25 +0000)
phpdbg_prompt.c

index 2deb3787982f5fa385c582acfb7dfdfec94d83dd..f34eaaf03023695db9cdefa88ad5d3ce1bcc1f95 100644 (file)
@@ -593,13 +593,15 @@ PHPDBG_COMMAND(eval) /* {{{ */
 
                        /* disable stepping while eval() in progress */
                        PHPDBG_G(flags) |= PHPDBG_IN_EVAL;
-                       if (zend_eval_stringl(param->str, param->len,
-                               &retval, "eval()'d code" TSRMLS_CC) == SUCCESS) {
-                               zend_print_zval_r(
-                                       &retval, 0 TSRMLS_CC);
-                               phpdbg_writeln(EMPTY);
-                               zval_dtor(&retval);
-                       }
+                       zend_try {
+                               if (zend_eval_stringl(param->str, param->len,
+                                       &retval, "eval()'d code" TSRMLS_CC) == SUCCESS) {
+                                       zend_print_zval_r(
+                                               &retval, 0 TSRMLS_CC);
+                                       phpdbg_writeln(EMPTY);
+                                       zval_dtor(&retval);
+                               }
+                       } zend_end_try();
                        PHPDBG_G(flags) &= ~PHPDBG_IN_EVAL;
 
                        /* switch stepping back on */
@@ -607,6 +609,8 @@ PHPDBG_COMMAND(eval) /* {{{ */
                                !(PHPDBG_G(flags) & PHPDBG_IS_STEPONEVAL)) {
                                PHPDBG_G(flags) |= PHPDBG_IS_STEPPING;
                        }
+                       
+                       CG(unclean_shutdown) = 0;
                } break;
 
                phpdbg_default_switch_case();