File 0674-erts-Fix-bug-in-erts_bs_private_append.patch of Package erlang
From db01e2ed57147df0f2bad6c7784e47b4575db7a4 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Tue, 24 Aug 2021 19:13:00 +0200
Subject: [PATCH 1/2] erts: Fix bug in erts_bs_private_append
PB_ACTIVE_WRITER was set without PB_IS_WRITABLE
---
erts/emulator/beam/erl_bits.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/erts/emulator/beam/erl_bits.c b/erts/emulator/beam/erl_bits.c
index d332e35499..eb6ab4a92b 100644
--- a/erts/emulator/beam/erl_bits.c
+++ b/erts/emulator/beam/erl_bits.c
@@ -1636,7 +1636,6 @@ erts_bs_private_append(Process* p, Eterm bin, Eterm build_size_term, Uint unit)
pos_in_bits_after_build = erts_bin_offset + build_size_in_bits;
pb->size = (pos_in_bits_after_build+7) >> 3;
- pb->flags |= PB_ACTIVE_WRITER;
/*
* Reallocate the binary if it is too small.
@@ -1666,12 +1665,13 @@ erts_bs_private_append(Process* p, Eterm bin, Eterm build_size_term, Uint unit)
*/
Binary* bptr = erts_bin_nrml_alloc(new_size);
sys_memcpy(bptr->orig_bytes, binp->orig_bytes, binp->orig_size);
- pb->flags |= PB_IS_WRITABLE | PB_ACTIVE_WRITER;
pb->val = bptr;
pb->bytes = (byte *) bptr->orig_bytes;
erts_bin_release(binp);
}
}
+ pb->flags |= PB_IS_WRITABLE | PB_ACTIVE_WRITER;
+
erts_current_bin = pb->bytes;
sb->size = pos_in_bits_after_build >> 3;
--
2.31.1