diff options
author | Andrei Zmievski <andrei@php.net> | 2000-06-09 03:00:02 +0000 |
---|---|---|
committer | Andrei Zmievski <andrei@php.net> | 2000-06-09 03:00:02 +0000 |
commit | 1868bfdcdf053b7cb2859f03521e50734e746ec4 (patch) | |
tree | 53cc6294a49134d78543ce5fc04376f93e2c83a5 /ext/session/session.c | |
parent | a4a4de55f7350619b311bde2755854ceea06e90b (diff) | |
download | php-git-1868bfdcdf053b7cb2859f03521e50734e746ec4.tar.gz |
(php_wddx_deserialize_ex) return SUCCESS/FAILURE
Use that return value in WDDX session deserializer.
Diffstat (limited to 'ext/session/session.c')
-rw-r--r-- | ext/session/session.c | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/ext/session/session.c b/ext/session/session.c index 3efca14f1a..cc0096bf42 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -336,42 +336,35 @@ PS_SERIALIZER_DECODE_FUNC(wddx) ulong idx; int hash_type; int dofree = 1; - int ret = SUCCESS; + int ret; if (vallen == 0) return SUCCESS; MAKE_STD_ZVAL(retval); - retval->type = IS_NULL; - - php_wddx_deserialize_ex((char *)val, vallen, retval); - - if (retval->type == IS_NULL) { - ret = FAILURE; - goto cleanup; - } - - for (zend_hash_internal_pointer_reset(retval->value.ht); - zend_hash_get_current_data(retval->value.ht, (void **) &ent) == SUCCESS; - zend_hash_move_forward(retval->value.ht)) { - hash_type = zend_hash_get_current_key(retval->value.ht, &key, &idx); - - switch (hash_type) { - case HASH_KEY_IS_LONG: - sprintf(tmp, "%ld", idx); - key = tmp; - dofree = 0; - /* fallthru */ - case HASH_KEY_IS_STRING: - php_set_session_var(key, strlen(key), *ent PSLS_CC); - PS_ADD_VAR(key); - if (dofree) efree(key); - dofree = 1; + if ((ret = php_wddx_deserialize_ex((char *)val, vallen, retval)) == SUCCESS) { + + for (zend_hash_internal_pointer_reset(retval->value.ht); + zend_hash_get_current_data(retval->value.ht, (void **) &ent) == SUCCESS; + zend_hash_move_forward(retval->value.ht)) { + hash_type = zend_hash_get_current_key(retval->value.ht, &key, &idx); + + switch (hash_type) { + case HASH_KEY_IS_LONG: + sprintf(tmp, "%ld", idx); + key = tmp; + dofree = 0; + /* fallthru */ + case HASH_KEY_IS_STRING: + php_set_session_var(key, strlen(key), *ent PSLS_CC); + PS_ADD_VAR(key); + if (dofree) efree(key); + dofree = 1; + } } } -cleanup: zval_dtor(retval); efree(retval); |