dmitry          Wed Jun  1 07:03:43 2005 EDT

  Modified files:              
    /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.198&r2=1.199&ty=u
Index: php-src/ext/standard/var.c
diff -u php-src/ext/standard/var.c:1.198 php-src/ext/standard/var.c:1.199
--- php-src/ext/standard/var.c:1.198    Wed Feb 23 06:17:52 2005
+++ php-src/ext/standard/var.c  Wed Jun  1 07:03:42 2005
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: var.c,v 1.198 2005/02/23 11:17:52 stas Exp $ */
+/* $Id: var.c,v 1.199 2005/06/01 11:03:42 dmitry Exp $ */
 
 
 /* {{{ includes 
@@ -696,7 +696,8 @@
                                        return;
                                }
                                
-                               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.64&r2=1.65&ty=u
Index: php-src/ext/standard/var_unserializer.c
diff -u php-src/ext/standard/var_unserializer.c:1.64 
php-src/ext/standard/var_unserializer.c:1.65
--- php-src/ext/standard/var_unserializer.c:1.64        Tue May 31 05:41:46 2005
+++ php-src/ext/standard/var_unserializer.c     Wed Jun  1 07:03:42 2005
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: var_unserializer.c,v 1.64 2005/05/31 09:41:46 sniper Exp $ */
+/* $Id: var_unserializer.c,v 1.65 2005/06/01 11:03:42 dmitry Exp $ */
 
 #include "php.h"
 #include "ext/standard/php_var.h"
@@ -325,7 +325,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.50&r2=1.51&ty=u
Index: php-src/ext/standard/var_unserializer.re
diff -u php-src/ext/standard/var_unserializer.re:1.50 
php-src/ext/standard/var_unserializer.re:1.51
--- php-src/ext/standard/var_unserializer.re:1.50       Tue May 31 05:41:36 2005
+++ php-src/ext/standard/var_unserializer.re    Wed Jun  1 07:03:42 2005
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: var_unserializer.re,v 1.50 2005/05/31 09:41:36 sniper Exp $ */
+/* $Id: var_unserializer.re,v 1.51 2005/06/01 11:03:42 dmitry Exp $ */
 
 #include "php.h"
 #include "ext/standard/php_var.h"
@@ -329,7 +329,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