diff options
author | Thies C. Arntzen <thies@php.net> | 2000-01-02 11:49:27 +0000 |
---|---|---|
committer | Thies C. Arntzen <thies@php.net> | 2000-01-02 11:49:27 +0000 |
commit | 953bf8bbf66ae7b64eb1b85fbda1916d92ce0cda (patch) | |
tree | 324c40c6c7d6779dfeeb21e962ec47fbb291689a /ext | |
parent | bc6811ec90a952c1c66d459cd13f40d63e606bf1 (diff) | |
download | php-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.c | 23 |
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; } |