File 1385-erts-Make-ErtsLiteralArea-tpl-into-flexible-array.patch of Package erlang

From 80a8e799645dd7d060daed36c1fbd8018c678c83 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Tue, 27 Jan 2026 19:01:15 +0100
Subject: [PATCH 5/6] erts: Make ErtsLiteralArea::tpl[] into flexible array

Purpose: Avoid warnings when compiler can figure out index > 0

Effect: sizeof(ErtsLiteralArea) decreases with sizeof(Eterm)
---
 erts/emulator/beam/erl_bif_persistent.c  | 3 +--
 erts/emulator/beam/erl_global_literals.c | 4 ++--
 erts/emulator/beam/global.h              | 4 ++--
 3 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/erts/emulator/beam/erl_bif_persistent.c b/erts/emulator/beam/erl_bif_persistent.c
index 6f95e1f657..db65e2cbea 100644
--- a/erts/emulator/beam/erl_bif_persistent.c
+++ b/erts/emulator/beam/erl_bif_persistent.c
@@ -949,8 +949,7 @@ do_info(Process* c_p, TrapData* trap_data)
         if (is_boxed(bucket)) {
             ErtsLiteralArea* area = term_to_area(bucket);
 
-            trap_data->memory += sizeof(ErtsLiteralArea) +
-                sizeof(Eterm) * (area->end - area->start - 1);
+            trap_data->memory += ERTS_LITERAL_AREA_SIZE(area);
 
             remaining--;
         }
diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h
index 50a6e1b52f..cd446986de 100644
--- a/erts/emulator/beam/global.h
+++ b/erts/emulator/beam/global.h
@@ -946,13 +946,13 @@ void erts_debug_foreach_release_literal_area_off_heap(void (*func)(ErlOffHeap *,
 typedef struct ErtsLiteralArea_ {
     struct erl_off_heap_header *off_heap;
     Eterm *end;
-    Eterm start[1]; /* beginning of area */
+    Eterm start[]; /* beginning of area */
 } ErtsLiteralArea;
 
 void erts_queue_release_literals(Process *c_p, ErtsLiteralArea* literals);
 
 #define ERTS_LITERAL_AREA_ALLOC_SIZE(N) \
-    (sizeof(ErtsLiteralArea) + sizeof(Eterm)*((N) - 1))
+    (offsetof(ErtsLiteralArea,start) + sizeof(Eterm)*(N))
 #define ERTS_LITERAL_AREA_SIZE(AP) \
     (ERTS_LITERAL_AREA_ALLOC_SIZE((AP)->end - (AP)->start))
 
-- 
2.51.0

openSUSE Build Service is sponsored by