cvs: php4 /ext/standard var.c /ext/standard/tests/serialize 002.phpt

From: Date: Sat, 01 Dec 2001 15:17:50 +0000
Subject: cvs: php4 /ext/standard var.c /ext/standard/tests/serialize 002.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-8348@lists.php.net to get a copy of this message
thies Sat Dec 1 10:17:50 2001 EDT Modified files: /php4/ext/standard var.c /php4/ext/standard/tests/serialize 002.phpt Log: improve last patch: non existant object variables are now serialized as NULL, this saves us from buffering the serialized data. Index: php4/ext/standard/var.c diff -u php4/ext/standard/var.c:1.119 php4/ext/standard/var.c:1.120 --- php4/ext/standard/var.c:1.119 Sat Dec 1 10:06:37 2001 +++ php4/ext/standard/var.c Sat Dec 1 10:17:50 2001 @@ -199,24 +199,29 @@ 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; ulong index; HashPosition pos; int i; - int cundef; - smart_str buf2={0}; - - cundef=0; + zval nval, *nvalp; + + ZVAL_NULL(&nval); + nvalp = &nval; + zend_hash_internal_pointer_reset_ex(HASH_OF(retval_ptr), &pos); + for (;; zend_hash_move_forward_ex(HASH_OF(retval_ptr), &pos)) { i = zend_hash_get_current_key_ex(HASH_OF(retval_ptr), &key, NULL, &index, 0, &pos); if (i == HASH_KEY_NON_EXISTANT) break; - + zend_hash_get_current_data_ex(HASH_OF(retval_ptr), (void **) &name, &pos); @@ -227,22 +232,16 @@ continue; } + php_var_serialize_string(buf, Z_STRVAL_PP(name), Z_STRLEN_PP(name)); + if (zend_hash_find(Z_OBJPROP_PP(struc), Z_STRVAL_PP(name), Z_STRLEN_PP(name) + 1, (void *) &d) == SUCCESS) { - php_var_serialize_string(&buf2, Z_STRVAL_PP(name), - Z_STRLEN_PP(name)); - php_var_serialize_intern(&buf2, d, var_hash TSRMLS_CC); + php_var_serialize_intern(buf, d, var_hash TSRMLS_CC); } else { - cundef++; + php_var_serialize_intern(buf, &nvalp, var_hash TSRMLS_CC); } } - smart_str_append_long(buf, count-cundef); - smart_str_appendl(buf, ":{", 2); - smart_str_appendl(buf,buf2.c,buf2.len); - smart_str_free(&buf2); } - - smart_str_appendc(buf, '}'); } Index: php4/ext/standard/tests/serialize/002.phpt diff -u php4/ext/standard/tests/serialize/002.phpt:1.1 php4/ext/standard/tests/serialize/002.phpt:1.2 --- php4/ext/standard/tests/serialize/002.phpt:1.1 Sat Dec 1 10:06:37 2001 +++ php4/ext/standard/tests/serialize/002.phpt Sat Dec 1 10:17:50 2001 @@ -27,8 +27,10 @@ ?> --EXPECT-- __sleep called -O:1:"t":1:{s:1:"a";s:5:"hello";} -object(t)(1) { +O:1:"t":2:{s:1:"a";s:5:"hello";s:1:"b";N;} +object(t)(2) { ["a"]=> string(5) "hello" + ["b"]=> + NULL }

« previous php.cvs (#8348) next »