diff options
author | Lukas Larsson <[email protected]> | 2016-03-29 14:57:29 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2016-03-29 14:57:29 +0200 |
commit | 3f190b62031783ad4fc9bb1fb91703a1b1b40ad7 (patch) | |
tree | 7b1a00e113b4350c373bc7f4f58daaf5032c947a /erts/emulator/beam/external.c | |
parent | 96a0a707c6a7ba7ce9d6668705ca10c66666a8c3 (diff) | |
parent | ed81bb9ed8114d2059783e2c2fdae526d3a36e1e (diff) | |
download | otp-3f190b62031783ad4fc9bb1fb91703a1b1b40ad7.tar.gz otp-3f190b62031783ad4fc9bb1fb91703a1b1b40ad7.tar.bz2 otp-3f190b62031783ad4fc9bb1fb91703a1b1b40ad7.zip |
Merge branch 'lukas/erts/enif_trace_functions/OTP-13442'
* lukas/erts/enif_trace_functions/OTP-13442:
erts: Fix bug in enif_send
erts: Fix windows nif port tests
erts: Fix bug in enif_term_to_binary
erts: Remove printout when dec_term fails in DEBUG
erts: Polish erl_nif docs
erts: Improve enif_binary_to_term
erts: Add enif_port_command
erts: Add enif_term_to_binary and enif_binary_to_term
erts: Add enif_is_process/port_alive
erts: Add enif_cpu/now_time and enif_make_unique_integer
Diffstat (limited to 'erts/emulator/beam/external.c')
-rw-r--r-- | erts/emulator/beam/external.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c index aac1490f0c..10f03636ec 100644 --- a/erts/emulator/beam/external.c +++ b/erts/emulator/beam/external.c @@ -967,19 +967,24 @@ erts_decode_dist_ext(ErtsHeapFactory* factory, return THE_NON_VALUE; } -Eterm erts_decode_ext(ErtsHeapFactory* factory, byte **ext) +Eterm erts_decode_ext(ErtsHeapFactory* factory, byte **ext, Uint32 flags) { + ErtsDistExternal ede, *edep; Eterm obj; byte *ep = *ext; if (*ep++ != VERSION_MAGIC) { erts_factory_undo(factory); return THE_NON_VALUE; } - ep = dec_term(NULL, factory, ep, &obj, NULL); + if (flags) { + ASSERT(flags == ERTS_DIST_EXT_BTT_SAFE); + ede.flags = flags; /* a dummy struct just for the flags */ + edep = &ede; + } else { + edep = NULL; + } + ep = dec_term(edep, factory, ep, &obj, NULL); if (!ep) { -#ifdef DEBUG - bin_write(ERTS_PRINT_STDERR,NULL,*ext,500); -#endif return THE_NON_VALUE; } *ext = ep; |