dmitry Wed Jun 1 06:53:26 2005 EDT
Modified files: (Branch: PHP_5_0)
/php-src/ext/standard var.c var_unserializer.c var_unserializer.re
Log:
Fixed bug #30791 (magic methods (__sleep/__wakeup/__toString) call __call if
object is overloaded)
http://cvs.php.net/diff.php/php-src/ext/standard/var.c?r1=1.191.2.5&r2=1.191.2.6&ty=u
Index: php-src/ext/standard/var.c
diff -u php-src/ext/standard/var.c:1.191.2.5
php-src/ext/standard/var.c:1.191.2.6
--- php-src/ext/standard/var.c:1.191.2.5 Fri Dec 17 09:39:35 2004
+++ php-src/ext/standard/var.c Wed Jun 1 06:53:25 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var.c,v 1.191.2.5 2004/12/17 14:39:35 derick Exp $ */
+/* $Id: var.c,v 1.191.2.6 2005/06/01 10:53:25 dmitry Exp $ */
/* {{{ includes
@@ -671,7 +671,8 @@
zval fname;
int res;
- if(Z_OBJCE_PP(struc) != PHP_IC_ENTRY) {
+ if (Z_OBJCE_PP(struc) != PHP_IC_ENTRY &&
+
zend_hash_exists(&Z_OBJCE_PP(struc)->function_table, "__sleep",
sizeof("__sleep"))) {
INIT_PZVAL(&fname);
ZVAL_STRINGL(&fname, "__sleep",
sizeof("__sleep") - 1, 0);
res =
call_user_function_ex(CG(function_table), struc, &fname,
http://cvs.php.net/diff.php/php-src/ext/standard/var_unserializer.c?r1=1.38.2.14&r2=1.38.2.15&ty=u
Index: php-src/ext/standard/var_unserializer.c
diff -u php-src/ext/standard/var_unserializer.c:1.38.2.14
php-src/ext/standard/var_unserializer.c:1.38.2.15
--- php-src/ext/standard/var_unserializer.c:1.38.2.14 Thu Apr 14 18:40:28 2005
+++ php-src/ext/standard/var_unserializer.c Wed Jun 1 06:53:25 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var_unserializer.c,v 1.38.2.14 2005/04/14 22:40:28 sniper Exp $ */
+/* $Id: var_unserializer.c,v 1.38.2.15 2005/06/01 10:53:25 dmitry Exp $ */
#include "php.h"
#include "ext/standard/php_var.h"
@@ -298,7 +298,8 @@
return 0;
}
- if(Z_OBJCE_PP(rval) != PHP_IC_ENTRY) {
+ if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY &&
+ zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup",
sizeof("__wakeup"))) {
INIT_PZVAL(&fname);
ZVAL_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 0);
call_user_function_ex(CG(function_table), rval, &fname,
&retval_ptr, 0, 0, 1, NULL TSRMLS_CC);
http://cvs.php.net/diff.php/php-src/ext/standard/var_unserializer.re?r1=1.27.2.12&r2=1.27.2.13&ty=u
Index: php-src/ext/standard/var_unserializer.re
diff -u php-src/ext/standard/var_unserializer.re:1.27.2.12
php-src/ext/standard/var_unserializer.re:1.27.2.13
--- php-src/ext/standard/var_unserializer.re:1.27.2.12 Wed Mar 9 20:54:24 2005
+++ php-src/ext/standard/var_unserializer.re Wed Jun 1 06:53:25 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var_unserializer.re,v 1.27.2.12 2005/03/10 01:54:24 helly Exp $ */
+/* $Id: var_unserializer.re,v 1.27.2.13 2005/06/01 10:53:25 dmitry Exp $ */
#include "php.h"
#include "ext/standard/php_var.h"
@@ -301,7 +301,8 @@
return 0;
}
- if(Z_OBJCE_PP(rval) != PHP_IC_ENTRY) {
+ if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY &&
+ zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup",
sizeof("__wakeup"))) {
INIT_PZVAL(&fname);
ZVAL_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 0);
call_user_function_ex(CG(function_table), rval, &fname,
&retval_ptr, 0, 0, 1, NULL TSRMLS_CC);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php