Browse Source

- Fixed bug #60099 (__halt_compiler() works in braced namespaces)

pull/271/head
Felipe Pena 15 years ago
parent
commit
3c7a573a2c
  1. 1
      NEWS
  2. 10
      Zend/tests/bug60099.phpt
  3. 5
      Zend/zend_compile.c

1
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

10
Zend/tests/bug60099.phpt

@ -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

5
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);

Loading…
Cancel
Save