File 0930-erts-Silence-faulty-CodeChecker-warnings.patch of Package erlang

From 2c6a538919b96a6bbca4f2ca6093e183286de2f8 Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Sat, 26 Apr 2025 01:02:15 +0200
Subject: [PATCH 2/2] [erts] Silence faulty CodeChecker warnings

---
 erts/emulator/beam/bif.c                | 4 ++++
 erts/emulator/beam/erl_alloc.c          | 1 +
 erts/emulator/beam/erl_bif_info.c       | 1 +
 erts/emulator/beam/erl_db_hash.c        | 3 +++
 erts/emulator/beam/erl_proc_sig_queue.c | 3 +++
 erts/emulator/beam/erl_process.c        | 7 ++++++-
 6 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index 8c50be31f3..5c1dec1385 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -159,6 +159,8 @@ BIF_RETTYPE link_1(BIF_ALIST_1)
 	if (!prt)
 	    goto res_no_proc;
 
+        ERTS_UNDEF(ref, THE_NON_VALUE);
+
         lnk = erts_link_internal_tree_lookup_create(&ERTS_P_LINKS(BIF_P),
                                                     &created,
                                                     ERTS_LNK_TYPE_PORT,
@@ -1100,6 +1102,8 @@ BIF_RETTYPE unlink_1(BIF_ALIST_1)
             ErtsPortOpResult res = ERTS_PORT_OP_DROPPED;
 	    Port *prt;
 
+            ERTS_UNDEF(ref, THE_NON_VALUE);
+
 	    /* Send unlink signal */
 	    prt = erts_port_lookup(BIF_ARG_1, ERTS_PORT_SFLGS_DEAD);
 	    if (!prt) {
diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c
index a344b585ae..ffd2eeade3 100644
--- a/erts/emulator/beam/erl_alloc.c
+++ b/erts/emulator/beam/erl_alloc.c
@@ -2867,6 +2867,7 @@ erts_allocator_options(void *proc)
     hpp = NULL;
     szp = &sz;
     sz = 0;
+    ERTS_UNDEF(hp, NULL);
 
  bld_term:
 
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index f9d95a83ca..90ec90b9df 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -3870,6 +3870,7 @@ fun_info_2(BIF_ALIST_2)
     case am_module:
         /* Unloaded funs must report their module even though we can't find
          * their full MFA. */
+        ASSERT(fe != NULL || mfa != NULL);
         val = (mfa != NULL) ? mfa->module : fe->module;
         hp = HAlloc(p, 3);
         break;
diff --git a/erts/emulator/beam/erl_db_hash.c b/erts/emulator/beam/erl_db_hash.c
index fa2fa7e67e..f132827e93 100644
--- a/erts/emulator/beam/erl_db_hash.c
+++ b/erts/emulator/beam/erl_db_hash.c
@@ -1585,6 +1585,7 @@ int db_erase_hash(DbTable *tbl, Eterm key, Eterm *ret)
 	bp = &b->next;
 	b = b->next;
     }
+    ERTS_UNDEF(nitems, -1);
     if (nitems_diff) {
         ADD_NITEMS(tb, lck_ctr, hval, nitems_diff);
         nitems = NITEMS_ESTIMATE(tb, lck_ctr, hval);
@@ -1650,6 +1651,7 @@ static int db_erase_object_hash(DbTable *tbl, Eterm object, Eterm *ret)
 	bp = &b->next;
 	b = b->next;
     }
+    ERTS_UNDEF(nitems, -1);
     if (nitems_diff) {
         ADD_NITEMS(tb, lck_ctr, hval, nitems_diff);
         nitems = NITEMS_ESTIMATE(tb, lck_ctr, hval);
@@ -2915,6 +2917,7 @@ static int db_take_hash(Process *p, DbTable *tbl, Eterm key, Eterm *ret)
             break;
         }
     }
+    ERTS_UNDEF(nitems, -1);
     if (nitems_diff) {
         ADD_NITEMS(tb, lck_ctr, hval, nitems_diff);
         nitems = NITEMS_ESTIMATE(tb, lck_ctr, hval);
diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c
index 9c35cb77f7..e662a71ee2 100644
--- a/erts/emulator/beam/erl_proc_sig_queue.c
+++ b/erts/emulator/beam/erl_proc_sig_queue.c
@@ -4184,6 +4184,7 @@ handle_exit_signal(Process *c_p, ErtsSigRecvTracing *tracing,
     Eterm reason;
     Eterm from;
 
+    ERTS_UNDEF(reason, THE_NON_VALUE);
     ASSERT(ERTS_PROC_SIG_TYPE(tag) == ERTS_SIG_Q_TYPE_GEN_EXIT);
     
     xsigd = get_exit_signal_data(sig);
@@ -4670,6 +4671,8 @@ handle_persistent_mon_msg(Process *c_p, Uint16 type,
             ErtsMessage *first = NULL, *prev, *last;
             Uint hsz = size_object(msg);
             Uint i;
+            ERTS_UNDEF(last,NULL);
+            ERTS_UNDEF(prev,NULL);
 
             for (i = 0; i < n; i++) {
                 Eterm *hp;
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index b96463161b..9c51830781 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -10674,6 +10674,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds)
 	    if (c_p->flags & F_DISABLE_GC) {
 		save_gc_task(c_p, st, st_prio);
 		st = NULL;
+                ERTS_UNDEF(st_res, am_undefined);
 		reds--;
 	    }
 	    else {
@@ -10687,6 +10688,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds)
 		    if (c_p->flags & (F_DIRTY_MAJOR_GC|F_DIRTY_MINOR_GC)) {
 			save_dirty_task(c_p, st);
 			st = NULL;
+                        ERTS_UNDEF(st_res, am_undefined);
 			break;
 		    }
 		    if (type == ERTS_PSTT_GC_MAJOR)
@@ -10729,6 +10731,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds)
                  * but instead unconditionally schedule this as dirty
                  * work...
                  */
+                ERTS_UNDEF(st_res, am_undefined);
                 if (c_p->flags & F_DISABLE_GC) {
                     /* We might need to GC, but GC was disabled */
                     save_gc_task(c_p, st, st_prio);
@@ -12945,8 +12948,10 @@ erts_send_local_spawn_reply(Process *parent, ErtsProcLocks parent_locks,
 
     type = child ? am_ok : am_error;
 
-    if (have_seqtrace(token) && child)
+    if (have_seqtrace(token) && child) {
         token_sz = size_object(token);
+        ERTS_UNDEF(token_copy, NIL);
+    }
     else {
         token_copy = token = NIL;
         token_sz = 0;
-- 
2.43.0

openSUSE Build Service is sponsored by