Commit:    7f743e1fca1773a8e5deaac079386c9a8b731601
Author:    krakjoe <joe.watk...@live.co.uk>         Tue, 12 Nov 2013 09:52:59 
+0000
Parents:   1d373be4fbaaf9878c4acb1afb21647651dbbbc4
Branches:  PHP-5.6

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=7f743e1fca1773a8e5deaac079386c9a8b731601

Log:
...

Changed paths:
  M  phpdbg_prompt.c
  M  phpdbg_prompt.h


Diff:
diff --git a/phpdbg_prompt.c b/phpdbg_prompt.c
index 5fae155..a3eaacb 100644
--- a/phpdbg_prompt.c
+++ b/phpdbg_prompt.c
@@ -47,9 +47,8 @@ static PHPDBG_COMMAND(exec) /* {{{ */
                printf(
                    "%sDestroying compiled opcodes%s\n",
                    PHPDBG_BOLD_LINE(TSRMLS_C), PHPDBG_END_LINE(TSRMLS_C));
-               destroy_op_array(PHPDBG_G(ops) TSRMLS_CC);
-               efree(PHPDBG_G(ops));
-               PHPDBG_G(ops) = NULL;
+               
+               phpdbg_clean(0 TSRMLS_CC);
        }
 
        PHPDBG_G(exec) = estrndup(expr, PHPDBG_G(exec_len) = expr_len);
@@ -99,9 +98,7 @@ static PHPDBG_COMMAND(compile) /* {{{ */
                            printf(
                                "%sDestroying previously compiled opcodes%s\n", 
                                PHPDBG_BOLD_LINE(TSRMLS_C), 
PHPDBG_END_LINE(TSRMLS_C));
-                           destroy_op_array(PHPDBG_G(ops) TSRMLS_CC);
-                           efree(PHPDBG_G(ops));
-                           PHPDBG_G(ops)=NULL;
+                           phpdbg_clean(0 TSRMLS_CC);
                    }
                }
 
@@ -184,6 +181,7 @@ static PHPDBG_COMMAND(eval) /* {{{ */
                        &retval, "eval()'d code" TSRMLS_CC) == SUCCESS) {
                        zend_print_zval_r(
                            &retval, 0 TSRMLS_CC);
+                       zval_dtor(&retval);
                        printf("\n");
                }
 
@@ -439,18 +437,7 @@ static PHPDBG_COMMAND(clean) /* {{{ */
         printf("[\tConstants: %d]\n", 
zend_hash_num_elements(EG(zend_constants)));
         printf("[\tIncluded: %d]\n", 
zend_hash_num_elements(&EG(included_files)));
 
-        /* this is implicitly required */
-        if (PHPDBG_G(ops)) {
-            destroy_op_array(
-                PHPDBG_G(ops) TSRMLS_CC);
-            efree(PHPDBG_G(ops));
-            PHPDBG_G(ops) = NULL;
-        }
-
-        zend_hash_reverse_apply(EG(function_table), (apply_func_t) 
clean_non_persistent_function_full TSRMLS_CC);
-        zend_hash_reverse_apply(EG(class_table), (apply_func_t) 
clean_non_persistent_class_full TSRMLS_CC);
-        zend_hash_reverse_apply(EG(zend_constants), (apply_func_t) 
clean_non_persistent_constant_full TSRMLS_CC);
-        zend_hash_clean(&EG(included_files));
+        phpdbg_clean(1 TSRMLS_CC);
 
         printf("[Clean Environment:]\n");
         printf("[\tClasses: %d]\n", zend_hash_num_elements(EG(class_table)));
@@ -702,13 +689,38 @@ phpdbg_interactive_enter:
 void phpdbg_print_opline(zend_execute_data *execute_data, zend_bool 
ignore_flags TSRMLS_DC) /* {{{ */
 {
     /* force out a line while stepping so the user knows what is happening */
-    if (ignore_flags || (!(PHPDBG_G(flags) & PHPDBG_IS_QUIET) || 
(PHPDBG_G(flags) & PHPDBG_IS_STEPPING))) {
+    if (ignore_flags || 
+        (!(PHPDBG_G(flags) & PHPDBG_IS_QUIET) || 
+        (PHPDBG_G(flags) & PHPDBG_IS_STEPPING))) {
+        
         zend_op *opline = execute_data->opline;
 
         printf(
             "%sOPLINE: %p:%s%s\n", 
             PHPDBG_BOLD_LINE(TSRMLS_C),
-            opline, phpdbg_decode_opcode(opline->opcode), 
PHPDBG_END_LINE(TSRMLS_C));
+            opline, 
+            phpdbg_decode_opcode(opline->opcode), 
+            PHPDBG_END_LINE(TSRMLS_C));
+    }
+} /* }}} */
+
+void phpdbg_clean(zend_bool full TSRMLS_DC) /* {{{ */
+{
+    zend_objects_store_call_destructors(&EG(objects_store) TSRMLS_CC);
+ 
+    /* this is implicitly required */
+    if (PHPDBG_G(ops)) {
+        destroy_op_array(
+            PHPDBG_G(ops) TSRMLS_CC);
+        efree(PHPDBG_G(ops));
+        PHPDBG_G(ops) = NULL;
+    }
+
+    if (full) {
+        zend_hash_reverse_apply(EG(function_table), (apply_func_t) 
clean_non_persistent_function_full TSRMLS_CC);
+        zend_hash_reverse_apply(EG(class_table), (apply_func_t) 
clean_non_persistent_class_full TSRMLS_CC);
+        zend_hash_reverse_apply(EG(zend_constants), (apply_func_t) 
clean_non_persistent_constant_full TSRMLS_CC);
+        zend_hash_clean(&EG(included_files));
     }
 } /* }}} */
 
diff --git a/phpdbg_prompt.h b/phpdbg_prompt.h
index f9fd39d..2a4fa4b 100644
--- a/phpdbg_prompt.h
+++ b/phpdbg_prompt.h
@@ -61,5 +61,6 @@ int phpdbg_do_cmd(const phpdbg_command_t *command, char 
*cmd_line, size_t cmd_le
 int phpdbg_interactive(TSRMLS_D);
 void phpdbg_execute_ex(zend_execute_data *execute_data TSRMLS_DC);
 void phpdbg_print_opline(zend_execute_data *execute_data, zend_bool 
ignore_flags TSRMLS_DC);
+void phpdbg_clean(zend_bool full TSRMLS_DC);
 
 #endif /* PHPDBG_PROMPT_H */


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to