dmitry          Mon Apr 11 05:27:49 2005 EDT

  Modified files:              
    /php-src/ext/wddx   wddx.c 
  Log:
  Support for encoding/decoding of private and protected members
  
  
http://cvs.php.net/diff.php/php-src/ext/wddx/wddx.c?r1=1.114&r2=1.115&ty=u
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.114 php-src/ext/wddx/wddx.c:1.115
--- php-src/ext/wddx/wddx.c:1.114       Fri Mar 11 20:46:47 2005
+++ php-src/ext/wddx/wddx.c     Mon Apr 11 05:27:47 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: wddx.c,v 1.114 2005/03/12 01:46:47 helly Exp $ */
+/* $Id: wddx.c,v 1.115 2005/04/11 09:27:47 dmitry Exp $ */
 
 #include "php.h"
 
@@ -522,7 +522,10 @@
                                continue;
 
                        if (zend_hash_get_current_key_ex(HASH_OF(obj), &key, 
&key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) {
-                               php_wddx_serialize_var(packet, *ent, key, 
key_len TSRMLS_CC);
+                               char *class_name, *prop_name;
+                               
+                               zend_unmangle_property_name(key, &class_name, 
&prop_name);
+                               php_wddx_serialize_var(packet, *ent, prop_name, 
strlen(prop_name)+1 TSRMLS_CC);
                        } else {
                                key_len = sprintf(tmp_buf, "%ld", idx);
                                php_wddx_serialize_var(packet, *ent, tmp_buf, 
key_len TSRMLS_CC);
@@ -972,6 +975,13 @@
                                                
                                                /* Clean up class name var 
entry */
                                                zval_ptr_dtor(&ent1->data);
+                                       } else if (Z_TYPE_P(ent2->data) == 
IS_OBJECT) {
+                                               zend_class_entry *old_scope = 
EG(scope);
+       
+                                               EG(scope) = 
Z_OBJCE_P(ent2->data);
+                                               ent1->data->refcount--;
+                                               add_property_zval(ent2->data, 
ent1->varname, ent1->data);
+                                               EG(scope) = old_scope;
                                        } else
                                                zend_hash_update(target_hash,
                                                                                
 ent1->varname, strlen(ent1->varname)+1,

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to