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

openSUSE Build Service is sponsored by