cvs: php-src /ext/wddx wddx.c
| From: | Dmitry Stogov | Date: | Mon, 11 Apr 2005 09:27:49 +0000 |
| Subject: | cvs: php-src /ext/wddx wddx.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-31343@lists.php.net to get a copy of this message | ||
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,