From: Operating system: PHP version: 5.3.5 Package: Scripting Engine problem Bug Type: Bug Bug description:checking the number of arguments is wrong in zend_parse_method_parameters_ex()
Description: ------------ Starting with PHP 5.3.0, zend_parse_method_parameters() and zend_parse_method_parameters_ex() check the number of passed arguments not to be 0. However, zend_parse_method_parameters_ex() passes num_args-1 to RETURN_IF_ZERO_ARGS, yielding immediate function return with return code FAILURE - checking the passed arguments fails incorrectly. See the 'test script' code for an idea how the problem scenario looks like. Note: the code for the 'test script' isn't php script code but rather C++ code for a class exposed from a custom php extension. Test script: --------------- /* {{{ proto void MySample::__destruct() */ ZEND_METHOD(mysample_class, __destruct) { zval* objid; #if 1 // fails: zend_parse_method_parameters_ex() returns FAILURE if (zend_parse_method_parameters_ex(0, ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &objid, mysample_class_entry) == FAILURE) return; #else // ... whereas zend_parse_method_parameters() returns SUCCESS if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &objid, mysample_class_entry) == FAILURE) return; #endif mysample_class* pobj = (mysample_class*) zend_object_store_get_object(objid TSRMLS_CC); // ... } /* }}} */ Expected result: ---------------- zend_parse_method_parameters_ex() should return SUCCESS just as zend_parse_method_parameters() does Actual result: -------------- zend_parse_method_parameters_ex() returns FAILURE -- Edit bug report at http://bugs.php.net/bug.php?id=53717&edit=1 -- Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=53717&r=trysnapshot52 Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=53717&r=trysnapshot53 Try a snapshot (trunk): http://bugs.php.net/fix.php?id=53717&r=trysnapshottrunk Fixed in SVN: http://bugs.php.net/fix.php?id=53717&r=fixed Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=53717&r=needdocs Fixed in release: http://bugs.php.net/fix.php?id=53717&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=53717&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=53717&r=needscript Try newer version: http://bugs.php.net/fix.php?id=53717&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=53717&r=support Expected behavior: http://bugs.php.net/fix.php?id=53717&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=53717&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=53717&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=53717&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=53717&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=53717&r=dst IIS Stability: http://bugs.php.net/fix.php?id=53717&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=53717&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=53717&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=53717&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=53717&r=mysqlcfg