summaryrefslogtreecommitdiff
path: root/ext/session/session.c
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2000-06-09 03:00:02 +0000
committerAndrei Zmievski <andrei@php.net>2000-06-09 03:00:02 +0000
commit1868bfdcdf053b7cb2859f03521e50734e746ec4 (patch)
tree53cc6294a49134d78543ce5fc04376f93e2c83a5 /ext/session/session.c
parenta4a4de55f7350619b311bde2755854ceea06e90b (diff)
downloadphp-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.c47
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);