From:             
Operating system: Linux (CentOS, Deb)
PHP version:      5.3.10
Package:          Reproducible crash
Bug Type:         Bug
Bug description:Crash on __call + __invoke magic

Description:
------------
Using PHP versions 5.3.3 up to 5.3.10:

A 'container' has many 'bags', but few methods. Each 'bag' has its own
methods that are callable through it's magic __invoke method. No methods
collide with the properties of the 'container', so one would expect that:

bag_container->bagone('e', array('Some Text'))

Would trigger bag_container's __call (since no method 'bagone' exists in
'bag_container'), which would further trigger the __invoke method in class
'bag'.

Unfortunately, it just creates a segfault =|

I see that there is a related bug
(https://bugs.php.net/bug.php?id=53195&edit=2), but since the bug has not
been updated and this one produces different behavior (segfault), I felt
that I should resubmit. Apologies if that's wrong.

Test script:
---------------
class bag {
        public function e($something) {
                echo $something;
        }
        public function __invoke() {
                return call_user_func_array(array($this, $method), $args);
        }
}
class bag_container {
        public $bagone;
        public function __construct() {
                $this->bagone = new bag();
        }
        public function __call($method, array $args = array()) {
            return call_user_func_array(array($this, $method), $args);
        }
}
$c = new bag_container();
$c->bagone('e', array('wtf'));

Expected result:
----------------
One would expect 'wtf' to be echo'd.

Actual result:
--------------
Segmentation fault.

-- 
Edit bug report at https://bugs.php.net/bug.php?id=61321&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=61321&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=61321&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=61321&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=61321&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=61321&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=61321&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=61321&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=61321&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=61321&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=61321&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=61321&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=61321&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=61321&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=61321&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=61321&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=61321&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=61321&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=61321&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=61321&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=61321&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=61321&r=mysqlcfg

Reply via email to