summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-03-07 13:18:04 +0100
committerNikita Popov <nikita.ppv@gmail.com>2017-03-07 13:18:04 +0100
commit361b7159e7bf8bb885b2a872058743fc19f0de1c (patch)
treeba221e8934c4ce0cb82a9d02da90ba85e5b9e094
parent6a31872307af660c2087317b800d280f4981be86 (diff)
parent8a6281455ed41ec42af2ceeeb789835b41839135 (diff)
downloadphp-git-361b7159e7bf8bb885b2a872058743fc19f0de1c.tar.gz
Merge branch 'PHP-7.1'
-rw-r--r--Zend/zend_gc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c
index 5aaef4ff8f..31bec4cb50 100644
--- a/Zend/zend_gc.c
+++ b/Zend/zend_gc.c
@@ -325,9 +325,12 @@ static zend_always_inline gc_root_buffer* gc_find_additional_buffer(zend_refcoun
/* We have to check each additional_buffer to find which one holds the ref */
while (additional_buffer) {
- gc_root_buffer *root = additional_buffer->buf + (GC_ADDRESS(GC_INFO(ref)) - GC_ROOT_BUFFER_MAX_ENTRIES);
- if (root->ref == ref) {
- return root;
+ uint32_t idx = GC_ADDRESS(GC_INFO(ref)) - GC_ROOT_BUFFER_MAX_ENTRIES;
+ if (idx < additional_buffer->used) {
+ gc_root_buffer *root = additional_buffer->buf + idx;
+ if (root->ref == ref) {
+ return root;
+ }
}
additional_buffer = additional_buffer->next;
}