Commit: 85e5e60777209c13c71785da31af86a5e0a98d92 Author: Dmitry Stogov <dmi...@zend.com> Thu, 28 Mar 2013 00:03:40 +0400 Parents: 1182a3356c6c1989a686aab5258e1d47c56b2955 Branches: PHP-5.4 PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=85e5e60777209c13c71785da31af86a5e0a98d92 Log: Fixed bug #64529 (Ran out of opcode space) Bugs: https://bugs.php.net/64529 Changed paths: M NEWS M Zend/zend_compile.c M Zend/zend_compile.h M Zend/zend_execute_API.c M Zend/zend_language_scanner.c M Zend/zend_language_scanner.l M Zend/zend_language_scanner_defs.h Diff: diff --git a/NEWS b/NEWS index 010b8f1..c085d8f 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2013, PHP 5.4.14 - Core + . Fixed bug #64529 (Ran out of opcode space). (Dmitry) . Fixed bug #64515 (Memoryleak when using the same variablename 2times in function declaration). (Laruence) . Fixed bug #64432 (more empty delimiter warning in strX methods). (Laruence) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 766a2de..82275ce 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1798,7 +1798,7 @@ void zend_do_end_function_declaration(const znode *function_token TSRMLS_DC) /* zend_do_return(NULL, 0 TSRMLS_CC); pass_two(CG(active_op_array) TSRMLS_CC); - zend_release_labels(TSRMLS_C); + zend_release_labels(0 TSRMLS_CC); if (CG(active_class_entry)) { zend_check_magic_method_implementation(CG(active_class_entry), (zend_function*)CG(active_op_array), E_COMPILE_ERROR TSRMLS_CC); @@ -2320,13 +2320,14 @@ void zend_do_goto(const znode *label TSRMLS_DC) /* {{{ */ } /* }}} */ -void zend_release_labels(TSRMLS_D) /* {{{ */ +void zend_release_labels(int temporary TSRMLS_DC) /* {{{ */ { if (CG(context).labels) { zend_hash_destroy(CG(context).labels); FREE_HASHTABLE(CG(context).labels); + CG(context).labels = NULL; } - if (!zend_stack_is_empty(&CG(context_stack))) { + if (!temporary && !zend_stack_is_empty(&CG(context_stack))) { zend_compiler_context *ctx; zend_stack_top(&CG(context_stack), (void**)&ctx); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 50ee3a4..32449d2 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -616,7 +616,7 @@ void zend_do_end_compilation(TSRMLS_D); void zend_do_label(znode *label TSRMLS_DC); void zend_do_goto(const znode *label TSRMLS_DC); void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2 TSRMLS_DC); -void zend_release_labels(TSRMLS_D); +void zend_release_labels(int temporary TSRMLS_DC); ZEND_API void function_add_ref(zend_function *function); diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index a38504f..09e703c 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1313,7 +1313,7 @@ void execute_new_code(TSRMLS_D) /* {{{ */ opline++; } - zend_release_labels(TSRMLS_C); + zend_release_labels(1 TSRMLS_CC); EG(return_value_ptr_ptr) = NULL; EG(active_op_array) = CG(active_op_array); diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 40fb574..03cf334 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Wed Nov 14 17:46:56 2012 */ +/* Generated by re2c 0.13.5 on Wed Mar 27 23:52:29 2013 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -595,7 +595,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSR CG(active_op_array) = original_active_op_array; if (compilation_successful) { pass_two(op_array TSRMLS_CC); - zend_release_labels(TSRMLS_C); + zend_release_labels(0 TSRMLS_CC); } else { efree(op_array); retval = NULL; @@ -770,7 +770,7 @@ zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC) zend_do_return(NULL, 0 TSRMLS_CC); CG(active_op_array) = original_active_op_array; pass_two(op_array TSRMLS_CC); - zend_release_labels(TSRMLS_C); + zend_release_labels(0 TSRMLS_CC); retval = op_array; } } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index cc54557..97c938e 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -593,7 +593,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSR CG(active_op_array) = original_active_op_array; if (compilation_successful) { pass_two(op_array TSRMLS_CC); - zend_release_labels(TSRMLS_C); + zend_release_labels(0 TSRMLS_CC); } else { efree(op_array); retval = NULL; @@ -768,7 +768,7 @@ zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC) zend_do_return(NULL, 0 TSRMLS_CC); CG(active_op_array) = original_active_op_array; pass_two(op_array TSRMLS_CC); - zend_release_labels(TSRMLS_C); + zend_release_labels(0 TSRMLS_CC); retval = op_array; } } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 9bde2a0..2e9b5c6 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Wed Nov 14 17:46:56 2012 */ +/* Generated by re2c 0.13.5 on Wed Mar 27 23:52:29 2013 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php