diff options
author | Lukas Larsson <[email protected]> | 2018-12-04 10:10:37 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2018-12-04 10:11:27 +0100 |
commit | 754e2022059864f2c4025ab67da759bde922a066 (patch) | |
tree | a43a7b60fee820bf9d365aa77510df7c74c1e38a /erts | |
parent | 0d24aecf46f9f387d64f06744f8a55b841669d1e (diff) | |
download | otp-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.c | 2 |
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; |