diff options
author | Stanislav Malyshev <stas@php.net> | 2003-03-26 20:42:23 +0000 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2003-03-26 20:42:23 +0000 |
commit | 43e87093c1cfa8f84caac4b138e7bef6777a3c81 (patch) | |
tree | f4762f776a730b971ab4ad844dade3667fac30e6 /Zend | |
parent | 018d85112998d3dc3011b8d04e5f09f1b6c0e03d (diff) | |
download | php-git-43e87093c1cfa8f84caac4b138e7bef6777a3c81.tar.gz |
Un-nest namespaces - now namespace X { namespace Y {} } is a parse error
Also refine namespaced includes
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_execute.c | 12 | ||||
-rw-r--r-- | Zend/zend_language_parser.y | 1 |
2 files changed, 6 insertions, 7 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 76b3586e36..ffe9c64aeb 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -3380,7 +3380,7 @@ int zend_include_or_eval_handler(ZEND_OPCODE_HANDLER_ARGS) } if (zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL)==SUCCESS) { - CG(active_namespace) = EG(active_namespace); + CG(active_namespace) = EG(global_namespace_ptr); new_op_array = zend_compile_file(&file_handle, (EX(opline)->op2.u.constant.value.lval==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC); zend_destroy_file_handle(&file_handle TSRMLS_CC); } else { @@ -3399,13 +3399,13 @@ int zend_include_or_eval_handler(ZEND_OPCODE_HANDLER_ARGS) break; case ZEND_INCLUDE: case ZEND_REQUIRE: - CG(active_namespace) = EG(active_namespace); + CG(active_namespace) = EG(global_namespace_ptr); new_op_array = compile_filename(EX(opline)->op2.u.constant.value.lval, inc_filename TSRMLS_CC); break; case ZEND_EVAL: { char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC); - CG(active_namespace) = EG(active_namespace); + CG(active_namespace) = EG(global_namespace_ptr); new_op_array = compile_string(inc_filename, eval_desc TSRMLS_CC); efree(eval_desc); } @@ -3431,12 +3431,12 @@ int zend_include_or_eval_handler(ZEND_OPCODE_HANDLER_ARGS) EX(function_state).function = (zend_function *) new_op_array; EX(object) = NULL; + EG(active_namespace) = EG(global_namespace_ptr); zend_execute(new_op_array TSRMLS_CC); - if(EG(active_namespace) != active_namespace) { - zend_switch_namespace(active_namespace TSRMLS_CC); - } + zend_switch_namespace(active_namespace TSRMLS_CC); + EX(function_state).function = saved_function; EX(object) = saved_object; diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 9a4946c4fc..acdbdc69bf 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -318,7 +318,6 @@ namespace_statement: | namespace_const_declaration ';' | function_declaration_statement | class_declaration_statement - | namespace_declaration_statement ; namespace_var_declaration_list: |