Merge branch 'PHP-5.3' into PHP-5.4

* PHP-5.3:
  Fixed bug #63468 (wrong called method as callback with inheritance)

Conflicts:
	NEWS
This commit is contained in:
Dmitry Stogov 2012-11-20 12:54:40 +04:00
commit 111aa9fd2e
3 changed files with 33 additions and 1 deletions

2
NEWS
View file

@ -3,6 +3,8 @@ PHP NEWS
?? ??? 2012, PHP 5.4.9
- Core:
. Fixed bug #63468 (wrong called method as callback with inheritance).
(Laruence)
. Fixed bug #63305 (zend_mm_heap corrupted with traits). (Dmitry, Laruence)
. Fixed bug #63369 ((un)serialize() leaves dangling pointers, causes crashes).
(Tony, Andrew Sitnikov)

30
Zend/tests/bug63468.phpt Normal file
View file

@ -0,0 +1,30 @@
--TEST--
Bug #63468 (wrong called method as callback with inheritance)
--FILE--
<?php
class Foo
{
public function run()
{
return call_user_func(array('Bar', 'getValue'));
}
private static function getValue()
{
return 'Foo';
}
}
class Bar extends Foo
{
public static function getValue()
{
return 'Bar';
}
}
$x = new Bar;
var_dump($x->run());
--EXPECT--
string(3) "Bar"

View file

@ -2732,7 +2732,7 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
} else if (zend_hash_find(ftable, lmname, mlen+1, (void**)&fcc->function_handler) == SUCCESS) {
retval = 1;
if ((fcc->function_handler->op_array.fn_flags & ZEND_ACC_CHANGED) &&
EG(scope) &&
!strict_class && EG(scope) &&
instanceof_function(fcc->function_handler->common.scope, EG(scope) TSRMLS_CC)) {
zend_function *priv_fbc;