diff options
| author | Zeev Suraski <zeev@php.net> | 2000-06-17 18:04:58 +0000 |
|---|---|---|
| committer | Zeev Suraski <zeev@php.net> | 2000-06-17 18:04:58 +0000 |
| commit | 34c2b0a07c5cbd5c7ea506a1891b9264c15631d0 (patch) | |
| tree | 9934a803c4c8388742bedfccb160828a6c623cdf /Zend/zend_ptr_stack.c | |
| parent | 66f1be08c8d8b437e0395ea6153664a7aa25fc7f (diff) | |
| download | php-git-34c2b0a07c5cbd5c7ea506a1891b9264c15631d0.tar.gz | |
- Add restore_error_handler()
error_handler's are now stored in a stack
Diffstat (limited to 'Zend/zend_ptr_stack.c')
| -rw-r--r-- | Zend/zend_ptr_stack.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/Zend/zend_ptr_stack.c b/Zend/zend_ptr_stack.c index ec9b448bfe..1bcfa6f593 100644 --- a/Zend/zend_ptr_stack.c +++ b/Zend/zend_ptr_stack.c @@ -104,11 +104,22 @@ ZEND_API void zend_ptr_stack_apply(zend_ptr_stack *stack, void (*func)(void *)) } -ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *)) +ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *), zend_bool free_elements) { zend_ptr_stack_apply(stack, func); + if (free_elements) { + int i = stack->top; + + while (--i >= 0) { + efree(stack->elements[i]); + } + } stack->top = 0; stack->top_element = stack->elements; } +ZEND_API int zend_ptr_stack_num_elements(zend_ptr_stack *stack) +{ + return stack->top; +} |
