diff options
author | Sverker Eriksson <[email protected]> | 2017-09-18 17:15:19 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2017-11-15 20:10:33 +0100 |
commit | fe720f6b2051c9bf8ff303f857c3db0a84b1c050 (patch) | |
tree | 6782f769a8e28c21c55dffda538c862ca38d73c0 /erts/emulator/beam/erl_nif.c | |
parent | c8a6219d1f6c678f8421b1062ff633487d52bf04 (diff) | |
download | otp-fe720f6b2051c9bf8ff303f857c3db0a84b1c050.tar.gz otp-fe720f6b2051c9bf8ff303f857c3db0a84b1c050.tar.bz2 otp-fe720f6b2051c9bf8ff303f857c3db0a84b1c050.zip |
erts: Refactor connection_id in ErtsDistExternal
Break out from 'flags' into new dedicated 'connection_id'
just for simplicity.
Also changed flags to low bits
and that affected enif_binary_to_term.
Diffstat (limited to 'erts/emulator/beam/erl_nif.c')
-rw-r--r-- | erts/emulator/beam/erl_nif.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c index c21b139cfa..d1018bab26 100644 --- a/erts/emulator/beam/erl_nif.c +++ b/erts/emulator/beam/erl_nif.c @@ -1201,11 +1201,12 @@ size_t enif_binary_to_term(ErlNifEnv *dst_env, Sint size; ErtsHeapFactory factory; byte *bp = (byte*) data; + Uint32 flags = 0; - ERTS_CT_ASSERT(ERL_NIF_BIN2TERM_SAFE == ERTS_DIST_EXT_BTT_SAFE); - - if (opts & ~ERL_NIF_BIN2TERM_SAFE) { - return 0; + switch ((Uint32)opts) { + case 0: break; + case ERL_NIF_BIN2TERM_SAFE: flags = ERTS_DIST_EXT_BTT_SAFE; break; + default: return 0; } if ((size = erts_decode_ext_size(bp, data_sz)) < 0) return 0; @@ -1217,7 +1218,7 @@ size_t enif_binary_to_term(ErlNifEnv *dst_env, erts_factory_dummy_init(&factory); } - *term = erts_decode_ext(&factory, &bp, (Uint32)opts); + *term = erts_decode_ext(&factory, &bp, flags); if (is_non_value(*term)) { return 0; |