aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2018-06-05 14:05:38 +0200
committerJohn Högberg <[email protected]>2018-06-05 14:05:38 +0200
commit5cb944bf32b7b3f4ec5500710fe10c28a643e1fd (patch)
tree817ed501c02aeda7cdc03725a6d4325a7f5741b0 /erts/emulator/beam
parentbbb3d151e6329d58b34e526fefb6964677d93104 (diff)
parentcfaede58328ace4bb4fb7c5e1b055e420c0ded9a (diff)
downloadotp-5cb944bf32b7b3f4ec5500710fe10c28a643e1fd.tar.gz
otp-5cb944bf32b7b3f4ec5500710fe10c28a643e1fd.tar.bz2
otp-5cb944bf32b7b3f4ec5500710fe10c28a643e1fd.zip
Merge branch 'maint-20' into maint
* maint-20: Updated OTP version Prepare release inets: Gracefully handle bad headers [erl_docgen] Update version [erl_docgen] Add missing file db_funcs.xsl to file list erts: Fix bug in system_profile erts: Fix bug in enif_binary_to_term for immediates
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/erl_nif.c6
-rw-r--r--erts/emulator/beam/erl_process.c14
2 files changed, 11 insertions, 9 deletions
diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c
index b96db5d054..4e479c26ef 100644
--- a/erts/emulator/beam/erl_nif.c
+++ b/erts/emulator/beam/erl_nif.c
@@ -1251,8 +1251,10 @@ size_t enif_binary_to_term(ErlNifEnv *dst_env,
if (is_non_value(*term)) {
return 0;
}
- erts_factory_close(&factory);
- cache_env(dst_env);
+ if (size > 0) {
+ erts_factory_close(&factory);
+ cache_env(dst_env);
+ }
ASSERT(bp > data);
return bp - data;
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 9b22f024b0..9f6adb03d0 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -7117,13 +7117,13 @@ change_proc_schedule_state(Process *p,
if (((n & (ERTS_PSFLG_SUSPENDED
| ERTS_PSFLG_ACTIVE)) == ERTS_PSFLG_ACTIVE)
- && (!(a & (ERTS_PSFLG_ACTIVE_SYS
- | ERTS_PSFLG_RUNNING
- | ERTS_PSFLG_RUNNING_SYS
- | ERTS_PSFLG_DIRTY_RUNNING
- | ERTS_PSFLG_DIRTY_RUNNING_SYS)
- && (!(a & ERTS_PSFLG_ACTIVE)
- || (a & ERTS_PSFLG_SUSPENDED))))) {
+ & ((a & (ERTS_PSFLG_SUSPENDED
+ | ERTS_PSFLG_ACTIVE)) != ERTS_PSFLG_ACTIVE)
+ & !(a & (ERTS_PSFLG_ACTIVE_SYS
+ | ERTS_PSFLG_RUNNING
+ | ERTS_PSFLG_RUNNING_SYS
+ | ERTS_PSFLG_DIRTY_RUNNING
+ | ERTS_PSFLG_DIRTY_RUNNING_SYS))) {
/* We activated a prevously inactive process */
profile_runnable_proc(p, am_active);
}