This is needed to enable simple BC wrappers to be written for code wanting to use overload in PHP4.
BTW: Notes on current CVS
flex 2.5.31 currently reports flex: fatal internal error, bad line in skeleton file flex 2.5.4: works OK (debian package flex-old)
/ext/standard/unserializer.c needs touching, otherwise re2c tries to generate it (and fails here)
Zeev/Andi could you OK it?, marcus is ok with the principle (although he hasnt seen the code)
Regards Alan
? fix_29716.txt ? nestfix.diff Index: zend_compile.c =================================================================== RCS file: /repository/ZendEngine2/zend_compile.c,v retrieving revision 1.578 diff -u -r1.578 zend_compile.c --- zend_compile.c 15 Aug 2004 15:48:32 -0000 1.578 +++ zend_compile.c 19 Aug 2004 12:44:40 -0000 @@ -1113,8 +1113,14 @@ zend_error(E_COMPILE_ERROR, "Method %s::%s() must take exactly 1 argument", CG(active_class_entry)->name, ZEND_GET_FUNC_NAME); } else if (name_len == sizeof(ZEND_SET_FUNC_NAME) - 1 && !memcmp(lcname, ZEND_SET_FUNC_NAME, sizeof(ZEND_SET_FUNC_NAME)) && CG(active_op_array)->num_args != 2) { zend_error(E_COMPILE_ERROR, "Method %s::%s() must take exactly 2 arguments", CG(active_class_entry)->name, ZEND_SET_FUNC_NAME); - } else if (name_len == sizeof(ZEND_CALL_FUNC_NAME) - 1 && !memcmp(lcname, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME)) && CG(active_op_array)->num_args != 2) { - zend_error(E_COMPILE_ERROR, "Method %s::%s() must take exactly 2 arguments", CG(active_class_entry)->name, ZEND_CALL_FUNC_NAME); + } else if (name_len == sizeof(ZEND_CALL_FUNC_NAME) - 1 && !memcmp(lcname, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME))) { + /* we allow 3 arguments to enable BC wrappers for PHP4 __call() */ + int num_args = CG(active_op_array)->num_args; + if ((num_args != 2) && (num_args != 3)) { + zend_error(E_COMPILE_ERROR, "Method %s::%s() must take exactly 2 arguments", CG(active_class_entry)->name, ZEND_CALL_FUNC_NAME); + } else if (num_args == 3) { + zend_error(E_STRICT, "Method %s::%s() should take exactly 2 arguments", CG(active_class_entry)->name, ZEND_CALL_FUNC_NAME); + } } } else { if (name_len == sizeof(ZEND_AUTOLOAD_FUNC_NAME) - 1 && !memcmp(lcname, ZEND_AUTOLOAD_FUNC_NAME, sizeof(ZEND_AUTOLOAD_FUNC_NAME)) && CG(active_op_array)->num_args != 1) {
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php