File 0138-erts-Fix-NIF-debug-readonly-check-of-binaries.patch of Package erlang

From 567cdef0b7b0192f0bb9b7a552ce6868795efae0 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Wed, 15 Nov 2017 13:27:06 +0100
Subject: [PATCH] erts: Fix NIF debug readonly check of binaries

when done by enif_free_env or enif_clear_env.

Do check before we free heap fragments.
---
 erts/emulator/beam/erl_nif.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c
index 3ade17b10d..f67b67325d 100644
--- a/erts/emulator/beam/erl_nif.c
+++ b/erts/emulator/beam/erl_nif.c
@@ -550,6 +550,9 @@ void enif_clear_env(ErlNifEnv* env)
     ASSERT(p == menv->env.proc);
     ASSERT(p->common.id == ERTS_INVALID_PID);
     ASSERT(MBUF(p) == menv->env.heap_frag);
+
+    free_tmp_objs(env);
+
     if (MBUF(p) != NULL) {
 	erts_cleanup_offheap(&MSO(p));
 	clear_offheap(&MSO(p));
@@ -561,7 +564,6 @@ void enif_clear_env(ErlNifEnv* env)
     menv->env.hp = menv->env.hp_end = HEAP_TOP(p);
     
     ASSERT(!is_offheap(&MSO(p)));
-    free_tmp_objs(env);
 }
 
 #ifdef ERTS_SMP
-- 
2.15.0

openSUSE Build Service is sponsored by