]> granicus.if.org Git - php/commitdiff
- Return the PHP 4 behavior of not allowing class declerations within
authorAndi Gutmans <andi@php.net>
Mon, 12 Jan 2004 07:15:55 +0000 (07:15 +0000)
committerAndi Gutmans <andi@php.net>
Mon, 12 Jan 2004 07:15:55 +0000 (07:15 +0000)
- class declerations. This happened when declaring a class within a
- method.
class A {
function foo() {
class B {
}
}
}

Zend/zend_compile.c

index afce4f0084289cd67331cc5f03442efb094cefe0..bec6dee9f381685e2b91d0eeb2dccc2a8fe62dfa 100644 (file)
@@ -2317,6 +2317,11 @@ void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znod
        zend_class_entry *new_class_entry = emalloc(sizeof(zend_class_entry));
        char *lcname = zend_str_tolower_dup(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len);
 
+       if (CG(active_class_entry)) {
+               zend_error(E_COMPILE_ERROR, "Class declarations may not be nested");
+               return;
+       }
+
        if (!(strcmp(lcname, "self") && strcmp(lcname, "parent"))) {
                efree(lcname);
                zend_error(E_COMPILE_ERROR, "Cannot use '%s' as class name as it is reserved", class_name->u.constant.value.str.val);