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

Reply via email to