cvs: php4 /ext/standard var.c

From: 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);

« previous php.cvs (#6550) next »