diff options
| author | Zeev Suraski <zeev@php.net> | 2000-03-13 14:15:23 +0000 |
|---|---|---|
| committer | Zeev Suraski <zeev@php.net> | 2000-03-13 14:15:23 +0000 |
| commit | ea033715a9020b200997ccc3682c2658b16de14e (patch) | |
| tree | 0419f9382ecb1f0f0d8f0e2cc7b9bf4ffb0b1a2a | |
| parent | 9c146016d3e1b6c66db29a96ff0f64c9214bb72a (diff) | |
| download | php-git-ea033715a9020b200997ccc3682c2658b16de14e.tar.gz | |
- Fix filename/lineno initialization for do_return
| -rw-r--r-- | Zend/zend-scanner.l | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index a4bb456356..538a85e2ff 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -338,8 +338,15 @@ ZEND_API zend_op_array *v_compile_files(int mark_as_ref CLS_DC, int file_count, int i; int compiler_result; int compiled_files=0; + znode retval_znode; zend_bool original_in_compilation = CG(in_compilation); + retval_znode.op_type = IS_CONST; + retval_znode.u.constant.type = IS_LONG; + retval_znode.u.constant.value.lval = 1; + retval_znode.u.constant.is_ref = 0; + retval_znode.u.constant.refcount = 1; + init_op_array(op_array, INITIAL_OP_ARRAY_SIZE); save_lexical_state(&original_lex_state CLS_CC); @@ -356,6 +363,9 @@ ZEND_API zend_op_array *v_compile_files(int mark_as_ref CLS_DC, int file_count, CG(active_op_array) = op_array; compiler_result = zendparse(CLS_C); zend_close_file_handle(file_handle CLS_CC); + if (i == file_count-1) { + 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 */ @@ -369,14 +379,6 @@ ZEND_API zend_op_array *v_compile_files(int mark_as_ref CLS_DC, int file_count, if (retval) { if (compiled_files>0) { - znode retval_znode; - - retval_znode.op_type = IS_CONST; - retval_znode.u.constant.type = IS_LONG; - retval_znode.u.constant.value.lval = 1; - retval_znode.u.constant.is_ref = 0; - retval_znode.u.constant.refcount = 1; - do_return(&retval_znode, 0 CLS_CC); CG(active_op_array) = original_active_op_array; pass_two(op_array); if (mark_as_ref) { |
