File 0242-erts-Suppress-false-array-out-of-bounds-warnings.patch of Package erlang
From 57bf81170116de7eefe3478f0bf04ae306b5f71b Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Tue, 27 Jan 2026 18:35:01 +0100
Subject: [PATCH 2/6] erts: Suppress false array out of bounds warnings
---
erts/emulator/beam/erl_proc_sig_queue.c | 8 ++++----
erts/emulator/beam/erl_term.h | 2 +-
erts/emulator/beam/erl_trace.c | 3 ++-
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c
index 2bf6026d07..08e8975e2e 100644
--- a/erts/emulator/beam/erl_proc_sig_queue.c
+++ b/erts/emulator/beam/erl_proc_sig_queue.c
@@ -1887,7 +1887,7 @@ get_altact_msg_data(ErtsMessage *sig, void **attachedp,
prio = !!(extra & ERTS_SIG_ALTACT_SIG_X_PRIO);
if (type == ERTS_SIG_Q_TYPE_DIST || type == ERTS_SIG_Q_TYPE_DIST_FRAG) {
- int ix = 0;
+ const Eterm* hp = sig->hfrag.mem;
ASSERT(sig->hfrag.alloc_size
>= (!!(extra & ERTS_SIG_ALTACT_SIG_X_PRIO)
+ !!(extra & ERTS_SIG_ALTACT_SIG_X_ALIAS)
@@ -1895,13 +1895,13 @@ get_altact_msg_data(ErtsMessage *sig, void **attachedp,
from = ERL_MESSAGE_FROM(sig);
msg = THE_NON_VALUE;
sender = ((extra & ERTS_SIG_ALTACT_SIG_X_PRIO)
- ? sig->hfrag.mem[ix++] /* pid */
+ ? *hp++ /* pid */
: from); /* node name */
alias = ((extra & ERTS_SIG_ALTACT_SIG_X_ALIAS)
- ? sig->hfrag.mem[ix++]
+ ? *hp++
: THE_NON_VALUE);
token = ((extra & ERTS_SIG_ALTACT_SIG_X_TOKEN)
- ? sig->hfrag.mem[ix++]
+ ? *hp++
: NIL);
attached = ERTS_MSG_COMBINED_HFRAG;
}
diff --git a/erts/emulator/beam/erl_term.h b/erts/emulator/beam/erl_term.h
index 13ab10c6a5..beb44c0818 100644
--- a/erts/emulator/beam/erl_term.h
+++ b/erts/emulator/beam/erl_term.h
@@ -1127,7 +1127,7 @@ typedef struct external_thing_ {
Uint32 high;
#endif
} port;
- Uint32 ui32[1];
+ Uint32 ui32[2];
Uint ui[1];
} data;
} ExternalThing;
diff --git a/erts/emulator/beam/erl_trace.c b/erts/emulator/beam/erl_trace.c
index b4b9c6a0ce..c242eb3574 100644
--- a/erts/emulator/beam/erl_trace.c
+++ b/erts/emulator/beam/erl_trace.c
@@ -3535,7 +3535,8 @@ erts_tracer_update_impl(ErtsTracer *tracer, ErtsTracer new_tracer)
hp = hf->mem + 2;
hf->used_size -= (sizeof(ErtsThrPrgrLaterOp)+sizeof(Eterm)-1)/sizeof(Eterm) + 1;
*tracer = copy_struct(tracer_state, sz, &hp, &hf->off_heap);
- *tracer = CONS(hf->mem, tracer_module, *tracer);
+ hp = hf->mem;
+ *tracer = CONS(hp, tracer_module, *tracer);
ASSERT((void*)(((char*)(ptr_val(*tracer)) - offsetof(ErlHeapFragment, mem))) == hf);
}
}
--
2.51.0