diff options
author | Sverker Eriksson <[email protected]> | 2017-02-03 15:22:48 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2017-02-03 17:23:35 +0100 |
commit | 3fe6f3c0caecec522c7e14353eda6bbb86c9e8d6 (patch) | |
tree | 29710e0dcc08a4798d61027f2f7762a0fc275ad8 /erts/emulator/hipe | |
parent | 69b928b12d9206d00879c08e46143f599f9dc34e (diff) | |
download | otp-3fe6f3c0caecec522c7e14353eda6bbb86c9e8d6.tar.gz otp-3fe6f3c0caecec522c7e14353eda6bbb86c9e8d6.tar.bz2 otp-3fe6f3c0caecec522c7e14353eda6bbb86c9e8d6.zip |
erts: Add deallocation veto for magic destructors
A magic destructor can return 0 and thereby take control
and prolong the lifetime of a magic binary.
Diffstat (limited to 'erts/emulator/hipe')
-rw-r--r-- | erts/emulator/hipe/hipe_load.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/erts/emulator/hipe/hipe_load.c b/erts/emulator/hipe/hipe_load.c index 2998ed87a2..87c5004d2b 100644 --- a/erts/emulator/hipe/hipe_load.c +++ b/erts/emulator/hipe/hipe_load.c @@ -61,7 +61,7 @@ void hipe_free_loader_state(HipeLoaderState *stp) stp->module = NIL; } -static void +static int hipe_loader_state_dtor(Binary* magic) { HipeLoaderState* stp = ERTS_MAGIC_BIN_DATA(magic); @@ -69,6 +69,7 @@ hipe_loader_state_dtor(Binary* magic) ASSERT(ERTS_MAGIC_BIN_DESTRUCTOR(magic) == hipe_loader_state_dtor); hipe_free_loader_state(stp); + return 1; } Binary *hipe_alloc_loader_state(Eterm module) |