]> granicus.if.org Git - php/commitdiff
Do the nul'ifiying of php_var_serialize's result at the right place
authorSascha Schumann <sas@php.net>
Fri, 3 Aug 2001 11:00:16 +0000 (11:00 +0000)
committerSascha Schumann <sas@php.net>
Fri, 3 Aug 2001 11:00:16 +0000 (11:00 +0000)
ext/session/session.c
ext/standard/var.c

index 7fe32677c587de9347fc32ee64a301f91b9e599e..6c7ab27cd3d382d6f98067db5d3346427a9fec31 100644 (file)
@@ -297,8 +297,6 @@ PS_SERIALIZER_ENCODE_FUNC(php_binary)
                        smart_str_appendl(&buf, key, key_length);
        );
        
-       smart_str_0(&buf);
-
        if (newlen) *newlen = buf.len;
        *newstr = buf.c;
        PHP_VAR_SERIALIZE_DESTROY(var_hash);
@@ -366,8 +364,6 @@ PS_SERIALIZER_ENCODE_FUNC(php)
                        smart_str_appendc(&buf, PS_DELIMITER);
        );
        
-       smart_str_0(&buf);
-
        if (newlen) *newlen = buf.len;
        *newstr = buf.c;
 
index c5bb299dd4e9d0285a7e2be3f289d7bf806531a3..a4a91be94281b5db24787e98f035206957d05139 100644 (file)
@@ -163,7 +163,7 @@ static inline int php_add_var_hash(HashTable *var_hash, zval *var, void *var_old
        return SUCCESS;
 }
 
-PHPAPI void php_var_serialize(smart_str *buf, zval **struc, HashTable *var_hash)
+static void php_var_serialize_intern(smart_str *buf, zval **struc, HashTable *var_hash)
 {
        char s[256];
        ulong slen;
@@ -254,8 +254,8 @@ PHPAPI void php_var_serialize(smart_str *buf, zval **struc, HashTable *var_hash)
                                                                }
 
                                                                if (zend_hash_find(Z_OBJPROP_PP(struc), Z_STRVAL_PP(name), Z_STRLEN_PP(name)+1, (void*)&d) == SUCCESS) {
-                                                                       php_var_serialize(buf, name, NULL);
-                                                                       php_var_serialize(buf, d, var_hash);    
+                                                                       php_var_serialize_intern(buf, name, NULL);
+                                                                       php_var_serialize_intern(buf, d, var_hash);     
                                                                }
                                                        }
                                                }
@@ -317,17 +317,17 @@ PHPAPI void php_var_serialize(smart_str *buf, zval **struc, HashTable *var_hash)
                                          case HASH_KEY_IS_LONG:
                                                        MAKE_STD_ZVAL(d);
                                                        ZVAL_LONG(d,index);
-                                                       php_var_serialize(buf, &d, NULL);
+                                                       php_var_serialize_intern(buf, &d, NULL);
                                                        FREE_ZVAL(d);
                                                        break;
                                                case HASH_KEY_IS_STRING:
                                                        MAKE_STD_ZVAL(d);       
                                                        ZVAL_STRING(d,key,0);
-                                                       php_var_serialize(buf, &d, NULL);
+                                                       php_var_serialize_intern(buf, &d, NULL);
                                                        FREE_ZVAL(d);
                                                        break;
                                        }
-                                       php_var_serialize(buf, data, var_hash);
+                                       php_var_serialize_intern(buf, data, var_hash);
                                }
                        }
                        smart_str_appendc(buf, '}');
@@ -338,6 +338,12 @@ PHPAPI void php_var_serialize(smart_str *buf, zval **struc, HashTable *var_hash)
        } 
 }
 
+PHPAPI void php_var_serialize(smart_str *buf, zval **struc, HashTable *var_hash)
+{
+       php_var_serialize_intern(buf, struc, var_hash);
+       smart_str_0(buf);
+}
+       
 /* }}} */
 /* {{{ php_var_dump */
 
@@ -606,7 +612,6 @@ PHP_FUNCTION(serialize)
        PHP_VAR_SERIALIZE_INIT(var_hash);
        php_var_serialize(&buf, struc, &var_hash);
        PHP_VAR_SERIALIZE_DESTROY(var_hash);
-       smart_str_0(&buf);
        RETVAL_STRINGL(buf.c, buf.len, 0);
 }