]> granicus.if.org Git - php/commitdiff
- Fixed bug #60099 (__halt_compiler() works in braced namespaces)
authorFelipe Pena <felipe@php.net>
Wed, 16 Nov 2011 17:41:40 +0000 (17:41 +0000)
committerFelipe Pena <felipe@php.net>
Wed, 16 Nov 2011 17:41:40 +0000 (17:41 +0000)
Zend/tests/bug60099.phpt [new file with mode: 0644]
Zend/zend_compile.c

diff --git a/Zend/tests/bug60099.phpt b/Zend/tests/bug60099.phpt
new file mode 100644 (file)
index 0000000..13e2f54
--- /dev/null
@@ -0,0 +1,10 @@
+--TEST--
+Bug #60099 (__halt_compiler() works in braced namespaces)
+--FILE--
+<?php
+namespace foo {
+       __halt_compiler();
+
+?>
+--EXPECTF--
+Fatal error: __HALT_COMPILER() can only be used from the outermost scope in %s on line %d
index 204f28e239ca87e36ad0df743dab4e82b996803e..dde71ed549e37164ace81114160614b57b250320 100644 (file)
@@ -5311,6 +5311,11 @@ void zend_do_halt_compiler_register(TSRMLS_D) /* {{{ */
        char *name, *cfilename;
        char haltoff[] = "__COMPILER_HALT_OFFSET__";
        int len, clen;
+       
+       if (CG(has_bracketed_namespaces) && CG(in_namespace)) {
+               zend_error(E_COMPILE_ERROR, "__HALT_COMPILER() can only be used from the outermost scope");
+       }
+       
        cfilename = zend_get_compiled_filename(TSRMLS_C);
        clen = strlen(cfilename);
        zend_mangle_property_name(&name, &len, haltoff, sizeof(haltoff) - 1, cfilename, clen, 0);