Commit: 65585b3aa2cbba0e7227877ce8b7c8bf78d98a38 Author: Dmitry Stogov <dmi...@zend.com> Wed, 14 Nov 2012 17:45:10 +0400 Parents: 5a1d2fe415cbd21f2237629b956012565494f203 Branches: PHP-5.4 PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=65585b3aa2cbba0e7227877ce8b7c8bf78d98a38 Log: Fixed compiler reenterability Changed paths: M Zend/zend_compile.c M Zend/zend_language_scanner.l Diff: diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 4dd3eaf..f25e7fa 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -219,6 +219,7 @@ ZEND_API void file_handle_dtor(zend_file_handle *fh) /* {{{ */ void init_compiler(TSRMLS_D) /* {{{ */ { CG(active_op_array) = NULL; + memset(&CG(context), 0, sizeof(CG(context))); zend_init_compiler_data_structures(TSRMLS_C); zend_init_rsrc_list(TSRMLS_C); zend_hash_init(&CG(filenames_table), 5, NULL, (dtor_func_t) free_estring, 0); diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 703ca96..bb35a93 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -578,6 +578,7 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSR init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); CG(in_compilation) = 1; CG(active_op_array) = op_array; + zend_stack_push(&CG(context_stack), (void *) &CG(context), sizeof(CG(context))); zend_init_compiler_context(TSRMLS_C); compiler_result = zendparse(TSRMLS_C); zend_do_return(&retval_znode, 0 TSRMLS_CC); @@ -747,6 +748,7 @@ zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC) init_op_array(op_array, ZEND_EVAL_CODE, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); CG(interactive) = orig_interactive; CG(active_op_array) = op_array; + zend_stack_push(&CG(context_stack), (void *) &CG(context), sizeof(CG(context))); zend_init_compiler_context(TSRMLS_C); BEGIN(ST_IN_SCRIPTING); compiler_result = zendparse(TSRMLS_C); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php