From: Andrey Hristov Date: Wed, 18 Aug 1999 16:43:57 +0000 (+0000) Subject: Ported fixed for bug #2103 from PHP3. X-Git-Tag: PRE_DELAYED_ARRAY_FETCH_PATCH~349 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3f48a5524d408dd02633dfa4247759981c85d64c;p=php Ported fixed for bug #2103 from PHP3. --- diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index a14f4e3f06..7ecdc1bff9 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -463,6 +463,7 @@ static void _php_wddx_push_element(void *user_data, const char *name, const char ent.varname = NULL; ent.data = (zval *)emalloc(sizeof(zval)); + ent.data->value.str.val = NULL; ent.data->value.str.len = 0; INIT_PZVAL(ent.data); wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); @@ -546,7 +547,7 @@ static void _php_wddx_pop_element(void *user_data, const char *name) ent1->varname, strlen(ent1->varname)+1, &ent1->data, sizeof(zval *), NULL); efree(ent1->varname); - } else { + } else { zend_hash_next_index_insert(ent2->data->value.ht, &ent1->data, sizeof(zval *), NULL); @@ -555,6 +556,8 @@ static void _php_wddx_pop_element(void *user_data, const char *name) efree(ent1); } } + else if (!strcmp(name, EL_VAR) && stack->varname) + efree(stack->varname); } /* }}} */ @@ -835,7 +838,11 @@ PHP_FUNCTION(wddx_deserialize) if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &packet) == FAILURE) { WRONG_PARAM_COUNT; } - + + convert_to_string(packet); + if (packet->value.str.len == 0) + return; + _php_wddx_deserialize(packet, return_value); } /* }}} */