summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorThies C. Arntzen <thies@php.net>2000-01-02 11:49:27 +0000
committerThies C. Arntzen <thies@php.net>2000-01-02 11:49:27 +0000
commit953bf8bbf66ae7b64eb1b85fbda1916d92ce0cda (patch)
tree324c40c6c7d6779dfeeb21e962ec47fbb291689a /ext
parentbc6811ec90a952c1c66d459cd13f40d63e606bf1 (diff)
downloadphp-git-953bf8bbf66ae7b64eb1b85fbda1916d92ce0cda.tar.gz
(var_dump, serialize, unserialize) support NULL
@- Added new NULL constant (Zeev, Zend library)
Diffstat (limited to 'ext')
-rw-r--r--ext/standard/var.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 92ca0692eb..9123156134 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -48,6 +48,11 @@ void php_var_dump(pval **struc, int level)
PHPWRITE(&buf[1], i - 1);
break;
+ case IS_UNSET:
+ i = sprintf(buf, "%*cNULL\n", level, ' ');
+ PHPWRITE(&buf[1], i - 1);
+ break;
+
case IS_LONG:
i = sprintf(buf, "%*cint(%ld)\n", level, ' ', (*struc)->value.lval);
PHPWRITE(&buf[1], i - 1);
@@ -198,6 +203,10 @@ void php_var_serialize(pval *buf, pval **struc)
STR_CAT(buf, s, slen);
return;
+ case IS_UNSET:
+ STR_CAT(buf, "N;", 2);
+ return;
+
case IS_LONG:
slen = sprintf(s, "i:%ld;", (*struc)->value.lval);
STR_CAT(buf, s, slen);
@@ -296,6 +305,16 @@ int php_var_unserialize(pval **rval, const char **p, const char *max)
ELS_FETCH();
switch (cur = **p) {
+ case 'N':
+ if (*((*p) + 1) != ';') {
+ return 0;
+ }
+ (*p)++;
+ INIT_PZVAL(*rval);
+ (*rval)->type = IS_UNSET;
+ (*p)++;
+ return 1;
+
case 'b': /* bool */
case 'i':
if (*((*p) + 1) != ':') {
@@ -439,8 +458,8 @@ int php_var_unserialize(pval **rval, const char **p, const char *max)
ALLOC_ZVAL(key);
ALLOC_ZVAL(data);
if (!php_var_unserialize(&key, p, max)) {
- zval_dtor(key);
- efree(key);
+ zval_dtor(key);
+ efree(key);
efree(data);
return 0;
}