]> granicus.if.org Git - php/commitdiff
(wddx_stack_destroy) Properly free the dangling varname.
authorAndrei Zmievski <andrei@php.net>
Sat, 15 Jan 2000 23:34:51 +0000 (23:34 +0000)
committerAndrei Zmievski <andrei@php.net>
Sat, 15 Jan 2000 23:34:51 +0000 (23:34 +0000)
(php_wddx_deserialize_ex) There should be only 1 value on the stack after
                          parser is done.

ext/wddx/wddx.c

index 0b500c6bb453bb9f8fe8969057ec1d909b4b5706..261ed3fce43a717aaa6271c2bdaeda17f5a3ec12 100644 (file)
@@ -187,6 +187,8 @@ static int wddx_stack_destroy(wddx_stack *stack)
                                zval_dtor(((st_entry *)stack->elements[i])->data);
                                efree(((st_entry *)stack->elements[i])->data);
                        }
+                       if (((st_entry *)stack->elements[i])->varname)
+                               efree(((st_entry *)stack->elements[i])->varname);
                        efree(stack->elements[i]);
                }               
                efree(stack->elements);
@@ -727,7 +729,7 @@ void php_wddx_deserialize_ex(char *value, int vallen, zval *return_value)
        
        XML_ParserFree(parser);
 
-       if (!wddx_stack_is_empty(&stack)) {
+       if (stack.top == 1) {
                wddx_stack_top(&stack, (void**)&ent);
                *return_value = *(ent->data);
                zval_copy_ctor(return_value);