From 3c7a573a2c56f68ca63514b265d29d9200a397d0 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Wed, 16 Nov 2011 17:41:40 +0000 Subject: [PATCH] - Fixed bug #60099 (__halt_compiler() works in braced namespaces) --- NEWS | 1 + Zend/tests/bug60099.phpt | 10 ++++++++++ Zend/zend_compile.c | 5 +++++ 3 files changed, 16 insertions(+) create mode 100644 Zend/tests/bug60099.phpt diff --git a/NEWS b/NEWS index d3ab317ae1..74d1ce1c72 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ PHP NEWS - Core: . Fixed bug #60227 (header() cannot detect the multi-line header with CR(0x0D)). (rui) + . Fixed bug #60099 (__halt_compiler() works in braced namespaces). (Felipe) . Fixed bug #55874 (GCC does not provide __sync_fetch_and_add on some archs). (klightspeed at netspace dot net dot au) . Fixed bug #52624 (tempnam() by-pass open_basedir with nonexistent diff --git a/Zend/tests/bug60099.phpt b/Zend/tests/bug60099.phpt new file mode 100644 index 0000000000..13e2f54b09 --- /dev/null +++ b/Zend/tests/bug60099.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #60099 (__halt_compiler() works in braced namespaces) +--FILE-- + +--EXPECTF-- +Fatal error: __HALT_COMPILER() can only be used from the outermost scope in %s on line %d diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 421a849255..47931e6dac 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -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); -- 2.50.1