diff options
-rw-r--r-- | Zend/zend_language_scanner.l | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 5153276089..56e4d27f21 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -354,7 +354,6 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type CLS CG(active_op_array) = op_array; compiler_result = zendparse(CLS_C); zend_do_return(&retval_znode, 0 CLS_CC); - restore_lexical_state(&original_lex_state CLS_CC); CG(in_compilation) = original_in_compilation; if (compiler_result==1) { /* parser error */ CG(unclean_shutdown) = 1; @@ -372,6 +371,9 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type CLS retval = NULL; } } + if (compilation_successful) { + restore_lexical_state(&original_lex_state CLS_CC); + } return retval; } |