diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-02-10 10:04:30 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-10 10:04:30 +0400 |
commit | f4cfaf36e23ca47da3e352e1c60909104c059647 (patch) | |
tree | 0db3e2a323b12c5bbf1a958c857f92eb58c240d1 /Zend/zend_stack.c | |
parent | 89a9acea1f9d821a9805b3857bf4febbba08690d (diff) | |
download | php-git-f4cfaf36e23ca47da3e352e1c60909104c059647.tar.gz |
Use better data structures (incomplete)
Diffstat (limited to 'Zend/zend_stack.c')
-rw-r--r-- | Zend/zend_stack.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Zend/zend_stack.c b/Zend/zend_stack.c index cf99499e79..31bb8afec5 100644 --- a/Zend/zend_stack.c +++ b/Zend/zend_stack.c @@ -161,6 +161,27 @@ ZEND_API void zend_stack_apply_with_argument(zend_stack *stack, int type, int (* } } +ZEND_API void zend_stack_clean(zend_stack *stack, void (*func)(void *), zend_bool free_elements) +{ + int i; + + if (func) { + for (i = 0; i < stack->top; i++) { + func(stack->elements[i]); + } + } + if (free_elements) { + if (stack->elements) { + for (i = 0; i < stack->top; i++) { + efree(stack->elements[i]); + } + efree(stack->elements); + stack->elements = NULL; + } + stack->top = stack->max = 0; + } +} + /* * Local variables: * tab-width: 4 |