cvs: php4 /ext/standard var.c
| From: | Thies C. Arntzen | Date: | Sat, 04 Aug 2001 17:29:55 +0000 |
| Subject: | cvs: php4 /ext/standard var.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-6550@lists.php.net to get a copy of this message | ||
thies Sat Aug 4 13:29:55 2001 EDT
Modified files:
/php4/ext/standard var.c
Log:
fix serialize:
- keys no longer have a trailing \0
- no leak on calling __wakeup (also saved 2* malloc & free)
- serializing objects that implement __sleep() works again
- make test works again:-)
Index: php4/ext/standard/var.c
diff -u php4/ext/standard/var.c:1.107 php4/ext/standard/var.c:1.108
--- php4/ext/standard/var.c:1.107 Sat Aug 4 01:37:11 2001
+++ php4/ext/standard/var.c Sat Aug 4 13:29:54 2001
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var.c,v 1.107 2001/08/04 05:37:11 sbergmann Exp $ */
+/* $Id: var.c,v 1.108 2001/08/04 17:29:54 thies Exp $ */
/* {{{ includes
@@ -201,6 +201,9 @@
php_var_serialize_class_name(buf, struc TSRMLS_CC);
+ smart_str_append_long(buf, count);
+ smart_str_appendl(buf, ":{", 2);
+
if (count > 0) {
char *key;
zval **d, **name;
@@ -284,15 +287,13 @@
case IS_OBJECT: {
zval *retval_ptr = NULL;
- zval *fname;
+ zval fname;
int res;
- MAKE_STD_ZVAL(fname);
- ZVAL_STRINGL(fname, "__sleep", sizeof("__sleep") - 1, 0);
-
- res = call_user_function_ex(CG(function_table), struc, fname,
+ INIT_PZVAL(&fname);
+ ZVAL_STRINGL(&fname, "__sleep", sizeof("__sleep") - 1, 0);
+ res = call_user_function_ex(CG(function_table), struc, &fname,
&retval_ptr, 0, 0, 1, NULL TSRMLS_CC);
- FREE_ZVAL(fname);
if (res == SUCCESS) {
if (retval_ptr) {
@@ -342,7 +343,7 @@
php_var_serialize_long(buf, index);
break;
case HASH_KEY_IS_STRING:
- php_var_serialize_string(buf, key, key_len);
+ php_var_serialize_string(buf, key, key_len - 1);
break;
}
php_var_serialize_intern(buf, data, var_hash TSRMLS_CC);
@@ -592,13 +593,11 @@
if ((*rval)->type == IS_OBJECT) {
zval *retval_ptr = NULL;
- zval *fname;
-
- MAKE_STD_ZVAL(fname);
- ZVAL_STRINGL(fname, "__wakeup", sizeof("__wakeup") - 1, 1);
+ zval fname;
- call_user_function_ex(CG(function_table), rval, fname, &retval_ptr, 0, 0, 1, NULL
TSRMLS_CC);
- FREE_ZVAL(fname);
+ 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);
if (retval_ptr)
zval_ptr_dtor(&retval_ptr);