diff options
author | Dmitry Stogov <dmitry@zend.com> | 2016-07-14 12:05:44 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2016-07-14 12:05:44 +0300 |
commit | 8fc934b0a1781bc0685775f4c476c6704d796a76 (patch) | |
tree | 765ec60f8f2cbb8640cc154ce5ace3e09425afb3 /Zend/zend_gc.c | |
parent | bb2bafc7d0e9296e6dfd4035839daf2cf9498da9 (diff) | |
download | php-git-8fc934b0a1781bc0685775f4c476c6704d796a76.tar.gz |
Fixed bug #71818 (Memory leak when array altered in destructor)
Diffstat (limited to 'Zend/zend_gc.c')
-rw-r--r-- | Zend/zend_gc.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index c001efcead..0e18a497a5 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -735,7 +735,6 @@ static void gc_add_garbage(zend_refcounted *ref, gc_additional_buffer **addition GC_TYPE(ref) |= GC_FAKE_BUFFER_FLAG; } if (buf) { - GC_REFCOUNT(ref)++; buf->ref = ref; buf->next = GC_G(roots).next; buf->prev = &GC_G(roots); @@ -898,7 +897,6 @@ static int gc_collect_roots(uint32_t *flags, gc_additional_buffer **additional_b current = GC_G(roots).next; while (current != &GC_G(roots)) { - GC_REFCOUNT(current->ref)++; if (GC_REF_GET_COLOR(current->ref) == GC_WHITE) { count += gc_collect_white(current->ref, flags, additional_buffer); } @@ -939,7 +937,6 @@ tail_call: GC_REF_GET_COLOR(ref) == GC_BLACK && GC_ADDRESS(GC_INFO(ref)) != GC_ROOT_BUFFER_MAX_ENTRIES)) { GC_TRACE_REF(ref, "removing from buffer"); - GC_REFCOUNT(ref)--; if (root) { GC_INFO(ref) = 0; GC_REMOVE_FROM_ROOTS(root); |