Skip to content

Commit

Permalink
erts: Suppress various NULL-pointer warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
jhogberg committed Feb 19, 2025
1 parent 615efd5 commit 8d8fa19
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
11 changes: 9 additions & 2 deletions erts/emulator/beam/dist.c
Original file line number Diff line number Diff line change
Expand Up @@ -3194,11 +3194,11 @@ void erts_schedule_dist_command(Port *prt, DistEntry *dist_entry)
& ERTS_PORT_SFLGS_DEAD) == 0);

dep = (DistEntry*) erts_prtsd_get(prt, ERTS_PRTSD_DIST_ENTRY);
ASSERT(dep);
ERTS_ASSUME(dep);
id = prt->common.id;
}
else {
ASSERT(dist_entry);
ERTS_ASSUME(dist_entry);
ERTS_LC_ASSERT(erts_lc_rwmtx_is_rlocked(&dist_entry->rwmtx)
|| erts_lc_rwmtx_is_rwlocked(&dist_entry->rwmtx));
ASSERT(is_internal_port(dist_entry->cid));
Expand Down Expand Up @@ -3773,6 +3773,9 @@ dist_port_commandv(Port *prt, ErtsDistOutputBuf *obuf)
#ifdef USE_VM_PROBES
if (DTRACE_ENABLED(dist_outputv)) {
DistEntry *dep = (DistEntry*) erts_prtsd_get(prt, ERTS_PRTSD_DIST_ENTRY);

ERTS_ASSUME(dep);

DTRACE_CHARBUF(port_str, 64);
DTRACE_CHARBUF(remote_str, 64);

Expand Down Expand Up @@ -3878,6 +3881,7 @@ erts_dist_command(Port *prt, int initial_reds)

ERTS_LC_ASSERT(erts_lc_is_port_locked(prt));

ERTS_ASSUME(dep);
erts_atomic_set_mb(&dep->dist_cmd_scheduled, 0);

erts_de_rlock(dep);
Expand Down Expand Up @@ -4625,6 +4629,9 @@ erts_dist_port_not_busy(Port *prt)
#ifdef USE_VM_PROBES
if (DTRACE_ENABLED(dist_port_not_busy)) {
DistEntry *dep = (DistEntry*) erts_prtsd_get(prt, ERTS_PRTSD_DIST_ENTRY);

ERTS_ASSUME(dep);

DTRACE_CHARBUF(port_str, 64);
DTRACE_CHARBUF(remote_str, 64);

Expand Down
12 changes: 11 additions & 1 deletion erts/emulator/beam/io.c
Original file line number Diff line number Diff line change
Expand Up @@ -3903,7 +3903,9 @@ erts_deliver_port_exit(Port *prt, Eterm from, Eterm reason, int send_closed,

if (state & ERTS_PORT_SFLG_DISTRIBUTION) {
DistEntry *dep = (DistEntry*) erts_prtsd_get(prt, ERTS_PRTSD_DIST_ENTRY);
ASSERT(dep);

ERTS_ASSUME(dep);

erts_do_net_exits(dep, modified_reason);
erts_deref_dist_entry(dep);
erts_prtsd_set(prt, ERTS_PRTSD_DIST_ENTRY, NULL);
Expand Down Expand Up @@ -6345,7 +6347,11 @@ int driver_output_binary(ErlDrvPort ix, char* hbuf, ErlDrvSizeT hlen,
if (state & ERTS_PORT_SFLG_DISTRIBUTION) {
DistEntry* dep = (DistEntry*) erts_prtsd_get(prt, ERTS_PRTSD_DIST_ENTRY);
Uint32 conn_id = (Uint32)(UWord) erts_prtsd_get(prt, ERTS_PRTSD_CONN_ID);

ERTS_ASSUME(dep);

erts_atomic64_inc_nob(&dep->in);

return erts_net_message(prt,
dep,
conn_id,
Expand Down Expand Up @@ -6390,7 +6396,11 @@ int driver_output2(ErlDrvPort ix, char* hbuf, ErlDrvSizeT hlen,
if (state & ERTS_PORT_SFLG_DISTRIBUTION) {
DistEntry *dep = (DistEntry*) erts_prtsd_get(prt, ERTS_PRTSD_DIST_ENTRY);
Uint32 conn_id = (Uint32)(UWord) erts_prtsd_get(prt, ERTS_PRTSD_CONN_ID);

ERTS_ASSUME(dep);

erts_atomic64_inc_nob(&dep->in);

if (len == 0)
return erts_net_message(prt,
dep,
Expand Down
2 changes: 2 additions & 0 deletions erts/emulator/beam/sys.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,8 @@ typedef ERTS_SYS_FD_TYPE ErtsSysFdType;
# define ERTS_UNREACHABLE ((void)0)
#endif

/* Tells the compiler to assume that a certain fact always holds, suppressing
* bogus warnings and/or enabling better optimizations. */
#if !defined(DEBUG)
# define ERTS_ASSUME(Expr) ((Expr) ? \
(void)0 : \
Expand Down

0 comments on commit 8d8fa19

Please sign in to comment.