felipe Sat, 26 Jun 2010 19:19:16 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=300768
Log: - Fixed bug #52160 (Invalid E_STRICT redefined constructor error) Bug: http://bugs.php.net/52160 (error getting bug information) Changed paths: U php/php-src/branches/PHP_5_2/NEWS U php/php-src/branches/PHP_5_2/Zend/tests/bug35634.phpt A php/php-src/branches/PHP_5_2/Zend/tests/bug52160.phpt U php/php-src/branches/PHP_5_2/Zend/tests/objects_011.phpt U php/php-src/branches/PHP_5_2/Zend/zend_compile.c U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/Zend/tests/bug35634.phpt U php/php-src/branches/PHP_5_3/Zend/tests/bug48215.phpt U php/php-src/branches/PHP_5_3/Zend/tests/bug48215_2.phpt A php/php-src/branches/PHP_5_3/Zend/tests/bug52160.phpt U php/php-src/branches/PHP_5_3/Zend/tests/objects_011.phpt U php/php-src/branches/PHP_5_3/Zend/zend_compile.c U php/php-src/trunk/Zend/tests/bug35634.phpt U php/php-src/trunk/Zend/tests/bug48215.phpt U php/php-src/trunk/Zend/tests/bug48215_2.phpt A php/php-src/trunk/Zend/tests/bug52160.phpt U php/php-src/trunk/Zend/tests/objects_011.phpt U php/php-src/trunk/Zend/zend_compile.c
Modified: php/php-src/branches/PHP_5_2/NEWS =================================================================== --- php/php-src/branches/PHP_5_2/NEWS 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_2/NEWS 2010-06-26 19:19:16 UTC (rev 300768) @@ -5,6 +5,7 @@ be set). (Felipe) - Fixed bug #52162 (custom request header variables with numbers are removed). (Sriram Natarajan) +- Fixed bug #52160 (Invalid E_STRICT redefined constructor error). (Felipe) - Fixed bug #52061 (memory_limit above 2G). (Felipe) - Fixed bug #52010 (open_basedir restrictions mismatch on vacuum command). (Ilia, Felipe) Modified: php/php-src/branches/PHP_5_2/Zend/tests/bug35634.phpt =================================================================== --- php/php-src/branches/PHP_5_2/Zend/tests/bug35634.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_2/Zend/tests/bug35634.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -30,7 +30,9 @@ set_error_handler('errorHandler'); define("pass2", 1); include(__FILE__); + print "ok\n"; } + ?> ---EXPECTF-- -Error: Redefining already defined constructor for class TestClass (%sbug35634.php:12) +--EXPECT-- +ok Added: php/php-src/branches/PHP_5_2/Zend/tests/bug52160.phpt =================================================================== --- php/php-src/branches/PHP_5_2/Zend/tests/bug52160.phpt (rev 0) +++ php/php-src/branches/PHP_5_2/Zend/tests/bug52160.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -0,0 +1,34 @@ +--TEST-- +Bug #52160 (Invalid E_STRICT redefined constructor error) +--FILE-- +<?php + +class bar { + function __construct() { } + static function bar() { + var_dump(1); + } +} + +bar::bar(); + +class foo { + static function foo() { + var_dump(2); + } + function __construct() { } +} + +foo::foo(); + +class baz { + static function baz() { + var_dump(3); + } +} + +?> +--EXPECTF-- +Strict Standards: Redefining already defined constructor for class foo in %s on line %d + +Fatal error: Constructor baz::baz() cannot be static in %s on line %d Property changes on: php/php-src/branches/PHP_5_2/Zend/tests/bug52160.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: php/php-src/branches/PHP_5_2/Zend/tests/objects_011.phpt =================================================================== --- php/php-src/branches/PHP_5_2/Zend/tests/objects_011.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_2/Zend/tests/objects_011.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -14,6 +14,5 @@ echo "Done\n"; ?> ---EXPECTF-- -Strict Standards: Redefining already defined constructor for class test in %s on line %d +--EXPECT-- Done Modified: php/php-src/branches/PHP_5_2/Zend/zend_compile.c =================================================================== --- php/php-src/branches/PHP_5_2/Zend/zend_compile.c 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_2/Zend/zend_compile.c 2010-06-26 19:19:16 UTC (rev 300768) @@ -1175,9 +1175,7 @@ /* Improve after RC: cache the lowercase class name */ if ((short_class_name_length == name_len) && (!memcmp(short_class_name, lcname, name_len))) { - if (CG(active_class_entry)->constructor) { - zend_error(E_STRICT, "Redefining already defined constructor for class %s", CG(active_class_entry)->name); - } else { + if (!CG(active_class_entry)->constructor) { CG(active_class_entry)->constructor = (zend_function *) CG(active_op_array); } } else if ((name_len == sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) && (!memcmp(lcname, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)))) { Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_3/NEWS 2010-06-26 19:19:16 UTC (rev 300768) @@ -10,6 +10,7 @@ function aliases). (Felipe) - Fixed bug #52162 (custom request header variables with numbers are removed). (Sriram Natarajan) +- Fixed bug #52160 (Invalid E_STRICT redefined constructor error). (Felipe) - Fixed bug #52138 (Constants are parsed into the ini file for section names). (Felipe) - Fixed bug #52115 (mysqli_result::fetch_all returns null, not an empty array). Modified: php/php-src/branches/PHP_5_3/Zend/tests/bug35634.phpt =================================================================== --- php/php-src/branches/PHP_5_3/Zend/tests/bug35634.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_3/Zend/tests/bug35634.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -30,7 +30,9 @@ set_error_handler('errorHandler'); define("pass2", 1); include(__FILE__); + print "ok\n"; } + ?> ---EXPECTF-- -Error: Redefining already defined constructor for class TestClass (%sbug35634.php:12) +--EXPECT-- +ok Modified: php/php-src/branches/PHP_5_3/Zend/tests/bug48215.phpt =================================================================== --- php/php-src/branches/PHP_5_3/Zend/tests/bug48215.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_3/Zend/tests/bug48215.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -29,8 +29,6 @@ ?> ===DONE=== --EXPECTF-- - -Strict Standards: Redefining already defined constructor for class A in %s on line %d B::__construct A::__construct B::A Modified: php/php-src/branches/PHP_5_3/Zend/tests/bug48215_2.phpt =================================================================== --- php/php-src/branches/PHP_5_3/Zend/tests/bug48215_2.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_3/Zend/tests/bug48215_2.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -16,7 +16,4 @@ ?> ===DONE=== --EXPECTF-- - -Strict Standards: Redefining already defined constructor for class a in %s on line %d - Fatal error: Call to undefined method b::b() in %s on line %d Added: php/php-src/branches/PHP_5_3/Zend/tests/bug52160.phpt =================================================================== --- php/php-src/branches/PHP_5_3/Zend/tests/bug52160.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/Zend/tests/bug52160.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -0,0 +1,34 @@ +--TEST-- +Bug #52160 (Invalid E_STRICT redefined constructor error) +--FILE-- +<?php + +class bar { + function __construct() { } + static function bar() { + var_dump(1); + } +} + +bar::bar(); + +class foo { + static function foo() { + var_dump(2); + } + function __construct() { } +} + +foo::foo(); + +class baz { + static function baz() { + var_dump(3); + } +} + +?> +--EXPECTF-- +Strict Standards: Redefining already defined constructor for class foo in %s on line %d + +Fatal error: Constructor baz::baz() cannot be static in %s on line %d Property changes on: php/php-src/branches/PHP_5_3/Zend/tests/bug52160.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: php/php-src/branches/PHP_5_3/Zend/tests/objects_011.phpt =================================================================== --- php/php-src/branches/PHP_5_3/Zend/tests/objects_011.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_3/Zend/tests/objects_011.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -14,6 +14,5 @@ echo "Done\n"; ?> ---EXPECTF-- -Strict Standards: Redefining already defined constructor for class test in %s on line %d +--EXPECT-- Done Modified: php/php-src/branches/PHP_5_3/Zend/zend_compile.c =================================================================== --- php/php-src/branches/PHP_5_3/Zend/zend_compile.c 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/branches/PHP_5_3/Zend/zend_compile.c 2010-06-26 19:19:16 UTC (rev 300768) @@ -1277,9 +1277,7 @@ /* Improve after RC: cache the lowercase class name */ if ((CG(active_class_entry)->name_length == name_len) && (!memcmp(class_lcname, lcname, name_len))) { - if (CG(active_class_entry)->constructor) { - zend_error(E_STRICT, "Redefining already defined constructor for class %s", CG(active_class_entry)->name); - } else { + if (!CG(active_class_entry)->constructor) { CG(active_class_entry)->constructor = (zend_function *) CG(active_op_array); } } else if ((name_len == sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) && (!memcmp(lcname, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)))) { Modified: php/php-src/trunk/Zend/tests/bug35634.phpt =================================================================== --- php/php-src/trunk/Zend/tests/bug35634.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/trunk/Zend/tests/bug35634.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -30,7 +30,9 @@ set_error_handler('errorHandler'); define("pass2", 1); include(__FILE__); + print "ok\n"; } + ?> ---EXPECTF-- -Error: Redefining already defined constructor for class TestClass (%sbug35634.php:12) +--EXPECT-- +ok Modified: php/php-src/trunk/Zend/tests/bug48215.phpt =================================================================== --- php/php-src/trunk/Zend/tests/bug48215.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/trunk/Zend/tests/bug48215.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -29,8 +29,6 @@ ?> ===DONE=== --EXPECTF-- - -Strict Standards: Redefining already defined constructor for class A in %s on line %d B::__construct A::__construct B::A Modified: php/php-src/trunk/Zend/tests/bug48215_2.phpt =================================================================== --- php/php-src/trunk/Zend/tests/bug48215_2.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/trunk/Zend/tests/bug48215_2.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -16,7 +16,4 @@ ?> ===DONE=== --EXPECTF-- - -Strict Standards: Redefining already defined constructor for class a in %s on line %d - Fatal error: Call to undefined method b::b() in %s on line %d Added: php/php-src/trunk/Zend/tests/bug52160.phpt =================================================================== --- php/php-src/trunk/Zend/tests/bug52160.phpt (rev 0) +++ php/php-src/trunk/Zend/tests/bug52160.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -0,0 +1,34 @@ +--TEST-- +Bug #52160 (Invalid E_STRICT redefined constructor error) +--FILE-- +<?php + +class bar { + function __construct() { } + static function bar() { + var_dump(1); + } +} + +bar::bar(); + +class foo { + static function foo() { + var_dump(2); + } + function __construct() { } +} + +foo::foo(); + +class baz { + static function baz() { + var_dump(3); + } +} + +?> +--EXPECTF-- +Strict Standards: Redefining already defined constructor for class foo in %s on line %d + +Fatal error: Constructor baz::baz() cannot be static in %s on line %d Property changes on: php/php-src/trunk/Zend/tests/bug52160.phpt ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: php/php-src/trunk/Zend/tests/objects_011.phpt =================================================================== --- php/php-src/trunk/Zend/tests/objects_011.phpt 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/trunk/Zend/tests/objects_011.phpt 2010-06-26 19:19:16 UTC (rev 300768) @@ -14,6 +14,5 @@ echo "Done\n"; ?> ---EXPECTF-- -Strict Standards: Redefining already defined constructor for class test in %s on line %d +--EXPECT-- Done Modified: php/php-src/trunk/Zend/zend_compile.c =================================================================== --- php/php-src/trunk/Zend/zend_compile.c 2010-06-26 18:39:54 UTC (rev 300767) +++ php/php-src/trunk/Zend/zend_compile.c 2010-06-26 19:19:16 UTC (rev 300768) @@ -1592,9 +1592,7 @@ /* Improve after RC: cache the lowercase class name */ if ((CG(active_class_entry)->name_length == name_len) && ((CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT) != ZEND_ACC_TRAIT) && (!memcmp(class_lcname, lcname, name_len))) { - if (CG(active_class_entry)->constructor) { - zend_error(E_STRICT, "Redefining already defined constructor for class %s", CG(active_class_entry)->name); - } else { + if (!CG(active_class_entry)->constructor) { CG(active_class_entry)->constructor = (zend_function *) CG(active_op_array); } } else if ((name_len == sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) && (!memcmp(lcname, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)))) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php