summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-05-23 13:41:26 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-05-23 13:41:26 +0200
commit378aeb86854a0e244b2f1528694b595660b7d533 (patch)
treea107f80040fe7cdd4132bb8194edef95f87fae10
parent531005d5e7eec35db0d063833c6d297cc9bdf1a6 (diff)
parent71ce7d32eaa2e6e55ddde55c729a046af81e7a0f (diff)
downloadphp-git-378aeb86854a0e244b2f1528694b595660b7d533.tar.gz
Merge branch 'PHP-7.4'
-rw-r--r--Zend/zend_arena.h11
-rw-r--r--ext/mysqlnd/mysqlnd_result.c5
2 files changed, 14 insertions, 2 deletions
diff --git a/Zend/zend_arena.h b/Zend/zend_arena.h
index a27d00d345..a469616592 100644
--- a/Zend/zend_arena.h
+++ b/Zend/zend_arena.h
@@ -110,4 +110,15 @@ static zend_always_inline void zend_arena_release(zend_arena **arena_ptr, void *
arena->ptr = (char*)checkpoint;
}
+static zend_always_inline zend_bool zend_arena_contains(zend_arena *arena, void *ptr)
+{
+ while (arena) {
+ if ((char*)ptr > (char*)arena && (char*)ptr <= arena->ptr) {
+ return 1;
+ }
+ arena = arena->prev;
+ }
+ return 0;
+}
+
#endif /* _ZEND_ARENA_H_ */
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index c87f393e5e..3f3630de7f 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -294,13 +294,14 @@ void MYSQLND_METHOD(mysqlnd_res, free_result_contents_internal)(MYSQLND_RES * re
{
DBG_ENTER("mysqlnd_res::free_result_contents_internal");
- result->m.free_result_buffers(result);
-
if (result->meta) {
+ ZEND_ASSERT(zend_arena_contains(result->memory_pool->arena, result->meta));
result->meta->m->free_metadata(result->meta);
result->meta = NULL;
}
+ result->m.free_result_buffers(result);
+
DBG_VOID_RETURN;
}
/* }}} */