aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--erts/emulator/beam/erl_threads.h2
-rw-r--r--erts/emulator/beam/io.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_threads.h b/erts/emulator/beam/erl_threads.h
index 0e759a1eec..1dc3ffeb3c 100644
--- a/erts/emulator/beam/erl_threads.h
+++ b/erts/emulator/beam/erl_threads.h
@@ -2138,6 +2138,7 @@ erts_no_atomic_read_bset(erts_no_atomic_t *var,
erts_aint_t set)
{
erts_aint_t old = *var;
+ *var &= ~mask;
*var |= (mask & set);
return old;
}
@@ -2235,6 +2236,7 @@ erts_no_atomic32_read_bset(erts_no_atomic32_t *var,
erts_aint32_t set)
{
erts_aint32_t old = *var;
+ *var &= ~mask;
*var |= (mask & set);
return old;
}
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c
index 3fc124589b..be094862d4 100644
--- a/erts/emulator/beam/io.c
+++ b/erts/emulator/beam/io.c
@@ -434,7 +434,7 @@ erts_port_cleanup(Port *prt)
void
erts_port_free(Port *prt)
{
-#if defined(ERTS_SMP) || defined(ERTS_ENABLE_LOCK_CHECK)
+#if defined(ERTS_SMP) || defined(DEBUG) || defined(ERTS_ENABLE_LOCK_CHECK)
erts_aint32_t state = erts_atomic32_read_nob(&prt->state);
#endif
ERTS_LC_ASSERT(state & (ERTS_PORT_SFLG_INITIALIZING