Skip to content

Commit 558c7ec

Browse files
author
Erlang/OTP
committed
Merge branch 'rickard/mon-link-dbg-fix' into maint-25
* rickard/mon-link-dbg-fix: [erts] Fix debug functionalty for monitors/links
2 parents 3427ff1 + f5a9c68 commit 558c7ec

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

erts/emulator/beam/erl_monitor_link.c

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -703,10 +703,15 @@ erts_debug_monitor_tree_destroying_foreach(ErtsMonitor *root,
703703
void *arg,
704704
void *vysp)
705705
{
706-
void *tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
707-
sizeof(ErtsMonLnkYieldState));
706+
void *tmp_vysp;
708707
Sint reds;
709-
sys_memcpy(tmp_vysp, tmp_vysp, sizeof(ErtsMonLnkYieldState));
708+
if (!vysp)
709+
tmp_vysp = NULL;
710+
else {
711+
tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
712+
sizeof(ErtsMonLnkYieldState));
713+
sys_memcpy(tmp_vysp, tmp_vysp, sizeof(ErtsMonLnkYieldState));
714+
}
710715
do {
711716
reds = ml_rbt_foreach_yielding((ErtsMonLnkNode *) root,
712717
(ErtsMonLnkNodeFunc) func,
@@ -1348,10 +1353,15 @@ erts_debug_link_tree_destroying_foreach(ErtsLink *root,
13481353
void *arg,
13491354
void *vysp)
13501355
{
1351-
void *tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
1352-
sizeof(ErtsMonLnkYieldState));
1356+
void *tmp_vysp;
13531357
Sint reds;
1354-
sys_memcpy(tmp_vysp, vysp, sizeof(ErtsMonLnkYieldState));
1358+
if (!vysp)
1359+
tmp_vysp = NULL;
1360+
else {
1361+
tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE,
1362+
sizeof(ErtsMonLnkYieldState));
1363+
sys_memcpy(tmp_vysp, vysp, sizeof(ErtsMonLnkYieldState));
1364+
}
13551365
do {
13561366
reds = ml_rbt_foreach_yielding((ErtsMonLnkNode *) root,
13571367
(ErtsMonLnkNodeFunc) func,

0 commit comments

Comments
 (0)