From 3b7d254e6ad6d05472c9a5fd23eb104fda25d2be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20B=C3=A1tyai?= Date: Wed, 6 Nov 2019 11:02:28 +0100 Subject: [PATCH] Add missing GC limit check to realloc with system allocator (#3279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu --- jerry-core/jmem/jmem-heap.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/jerry-core/jmem/jmem-heap.c b/jerry-core/jmem/jmem-heap.c index f93e82f2f..a2b9c9d0f 100644 --- a/jerry-core/jmem/jmem-heap.c +++ b/jerry-core/jmem/jmem-heap.c @@ -649,7 +649,15 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */ JMEM_HEAP_STAT_ALLOC (new_size); return ret_block_p; #else /* ENABLED (JERRY_SYSTEM_ALLOCATOR) */ - JERRY_CONTEXT (jmem_heap_allocated_size) += (new_size - old_size); + const size_t required_size = new_size - old_size; +#if !ENABLED (JERRY_MEM_GC_BEFORE_EACH_ALLOC) + if (JERRY_CONTEXT (jmem_heap_allocated_size) + required_size >= JERRY_CONTEXT (jmem_heap_limit)) +#endif /* !ENABLED (JERRY_MEM_GC_BEFORE_EACH_ALLOC) */ + { + ecma_free_unused_memory (JMEM_PRESSURE_LOW); + } + + JERRY_CONTEXT (jmem_heap_allocated_size) += required_size; while (JERRY_CONTEXT (jmem_heap_allocated_size) >= JERRY_CONTEXT (jmem_heap_limit)) {