File 0426-tools-Terminate-on-ENOMEM-in-erl_memory.c.patch of Package erlang
From 22ce7a73bf8d3d405c4e68b05aa674b28327a307 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Wed, 10 Feb 2021 17:57:20 +0100
Subject: [PATCH 26/34] tools: Terminate on ENOMEM in erl_memory.c
CodeChecker complains about deref NULL pointer.
I see no point in trying to salvage ENOMEM in this case.
---
lib/tools/c_src/erl_memory.c | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/lib/tools/c_src/erl_memory.c b/lib/tools/c_src/erl_memory.c
index 2726d7b81e..f247e6568d 100644
--- a/lib/tools/c_src/erl_memory.c
+++ b/lib/tools/c_src/erl_memory.c
@@ -464,10 +464,10 @@ enqueue(em_state *state, em_buf_queue *queue, size_t min_size)
buf = (em_buffer *) (*state->alloc)(sizeof(em_buffer)
+ (sizeof(char)
* (bsize-EM_DEFAULT_BUF_SZ)));
- if (buf) {
- buf->size = bsize;
- reset_buffer(buf, bsize);
- }
+ if (!buf)
+ error(ENOMEM);
+ buf->size = bsize;
+ reset_buffer(buf, bsize);
}
if (queue->last) {
@@ -568,15 +568,10 @@ get_next_write_area(em_area *area, em_state *state, em_buf_queue *queue,
? queue->last
: enqueue(state, queue, size));
- if (buf) {
- ASSERT(buf->end - buf->data_end >= size);
- area->ptr = buf->data_end;
- area->size = buf->end - buf->data_end;
- }
- else {
- area->ptr = NULL;
- area->size = 0;
- }
+ ASSERT(buf);
+ ASSERT(buf->end - buf->data_end >= size);
+ area->ptr = buf->data_end;
+ area->size = buf->end - buf->data_end;
if (queue->tot_buf_size > queue->max_buf_size) {
fprintf(stderr,
--
2.26.2