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

Reply via email to