ID: 31086 Updated by: [EMAIL PROTECTED] Reported By: junkmail at konvergencia dot hu -Status: Verified +Status: Closed Bug Type: Zend Engine 2 problem Operating System: * PHP Version: 5CVS-2005-02-14 New Comment:
This is the same as #30080, that is already fixed in CVS HEAD and PHP_5_0. Previous Comments: ------------------------------------------------------------------------ [2005-01-23 21:09:14] [EMAIL PROTECTED] Funny, while the first works: php -r 'class A{} class B { function __construct(A $x){}} $b=new B(new A);' the second does not: php -r 'class A{} class B { function __construct(A $x){}} new B(new A);' Fatal error: Argument 1 must be an object of class A in Command line code on line 1 ------------------------------------------------------------------------ [2005-01-23 20:36:52] [EMAIL PROTECTED] On the other hand this script fully works. <?php class A { } class B { function __construct(A $a) { var_dump($a); } } $a = new A(); new B($a); ?> Therefore I think some wrong assumption is made for the temporary variable received in the handler specific to constructors. ------------------------------------------------------------------------ [2005-01-23 20:32:15] [EMAIL PROTECTED] Confirmed both on Linux and OSX. It seems presence of a type hint doesn't matter. ---- <?php class A { } class B { function __construct(A $a) { var_dump($a); } } new B(new A()); ?> ---- #0 zend_std_object_get_class (object=0xffffffff) at /home/moriyoshi/src/php-src-5/Zend/zend_object_handlers.c:825 #1 0x0823a597 in zend_get_class_entry (zobject=0x8557dd4) at /home/moriyoshi/src/php-src-5/Zend/zend_API.c:227 #2 0x082bbde0 in zend_verify_arg_type (zf=0xffffffff, arg_num=1, arg=0x8556e94) at /home/moriyoshi/src/php-src-5/Zend/zend_execute.c:614 #3 0x0825c75a in ZEND_RECV_SPEC_HANDLER (execute_data=0xbfffd190) at zend_vm_execute.h:343 #4 0x0825bbe8 in execute (op_array=0x8568984) at zend_vm_execute.h:78 #5 0x0825c179 in zend_do_fcall_common_helper_SPEC (execute_data=0xbfffd320) at zend_vm_execute.h:204 #6 0x0825bbe8 in execute (op_array=0x8561c04) at zend_vm_execute.h:78 #7 0x08239e1f in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /home/moriyoshi/src/php-src-5/Zend/zend.c:1058 #8 0x081fd08f in php_execute_script (primary_file=0xbffff720) at /home/moriyoshi/src/php-src-5/main/main.c:1636 #9 0x082be3ae in main (argc=2, argv=0xbffff7e4) ------------------------------------------------------------------------ [2005-01-21 16:23:11] junkmail at konvergencia dot hu I can reproduce the error with the latest -STABLE snapshot (php5-STABLE-200501211330). php -v output: PHP 5.0.4-dev (cgi) (built: Jan 21 2005 15:44:03) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies The backtrace is the same. I've tried to compile with different optimization levels (from none to -O2, with and without -fno-strict-aliasing) and with gcc 2.95 (the default compiler on FreeBSD 4.x, and gcc 3.3) The result is always the same :/ ------------------------------------------------------------------------ [2005-01-11 23:40:17] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.0-win32-latest.zip I can't reproduce it with latest 5.0.x-CVS version. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/31086 -- Edit this bug report at http://bugs.php.net/?id=31086&edit=1