aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2018-12-04 10:10:37 +0100
committerLukas Larsson <[email protected]>2018-12-04 10:11:27 +0100
commit754e2022059864f2c4025ab67da759bde922a066 (patch)
treea43a7b60fee820bf9d365aa77510df7c74c1e38a /erts
parent0d24aecf46f9f387d64f06744f8a55b841669d1e (diff)
downloadotp-754e2022059864f2c4025ab67da759bde922a066.tar.gz
otp-754e2022059864f2c4025ab67da759bde922a066.tar.bz2
otp-754e2022059864f2c4025ab67da759bde922a066.zip
erts: Fix copy of literal msg during gc
A copy has to be made of the message as there is a trace token. There was a bug where the actual message was incorrectly modified even if it was a literal.
Diffstat (limited to 'erts')
-rw-r--r--erts/emulator/beam/erl_gc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index b4df418cd5..d5dfb096b1 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -2477,7 +2477,7 @@ erts_copy_one_frag(Eterm** hpp, ErlOffHeap* off_heap,
*hpp = hp;
for (i = 0; i < nrefs; i++) {
- if (is_not_immed(refs[i]))
+ if (is_not_immed(refs[i]) && !erts_is_literal(refs[i],boxed_val(refs[i])))
refs[i] = offset_ptr(refs[i], offs);
}
bp->off_heap.first = NULL;