diff options
author | Rickard Green <[email protected]> | 2014-09-05 15:05:29 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2014-09-05 15:05:29 +0200 |
commit | a19560d72fe0ed5496cc277f8f31903fd8e3b106 (patch) | |
tree | a62709aceca7ff65bd4787f171e1d8435f5c90eb /erts/emulator/beam/erl_process.c | |
parent | 7455b362c5f85836b2d233be50db85dfe789022e (diff) | |
parent | b3a7e7f84b6e6183113ee961b06d3765de7a48b3 (diff) | |
download | otp-a19560d72fe0ed5496cc277f8f31903fd8e3b106.tar.gz otp-a19560d72fe0ed5496cc277f8f31903fd8e3b106.tar.bz2 otp-a19560d72fe0ed5496cc277f8f31903fd8e3b106.zip |
Merge branch 'maint'
* maint:
Fix leak of NIF exports
Use separate allocation type for NIF export
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r-- | erts/emulator/beam/erl_process.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index 685004f267..20a88ec581 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -11872,6 +11872,7 @@ erts_continue_exit_process(Process *p) struct saved_calls *scb; process_breakpoint_time_t *pbt; erts_aint32_t state; + void *nif_export; #ifdef DEBUG int yield_allowed = 1; @@ -12022,6 +12023,7 @@ erts_continue_exit_process(Process *p) : NULL); scb = ERTS_PROC_SET_SAVED_CALLS_BUF(p, ERTS_PROC_LOCKS_ALL, NULL); pbt = ERTS_PROC_SET_CALL_TIME(p, ERTS_PROC_LOCKS_ALL, NULL); + nif_export = ERTS_PROC_SET_NIF_TRAP_EXPORT(p, ERTS_PROC_LOCKS_ALL, NULL); erts_smp_proc_unlock(p, ERTS_PROC_LOCKS_ALL); #ifdef BM_COUNTERS @@ -12069,6 +12071,9 @@ erts_continue_exit_process(Process *p) if (pbt) erts_free(ERTS_ALC_T_BPD, (void *) pbt); + if (nif_export) + erts_destroy_nif_export(nif_export); + delete_process(p); #ifdef ERTS_SMP |