diff options
author | Björn Gustavsson <[email protected]> | 2009-12-10 10:21:55 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2009-12-13 15:42:36 +0100 |
commit | 7ab33f49185d5a416198f1e0bf5a2ca9f347bbac (patch) | |
tree | 80e5c93a0df2b1583601d2fcfff29071918715e7 /erts/preloaded | |
parent | 9855ed863b58f7325f39b00c60813198ec41f528 (diff) | |
download | otp-7ab33f49185d5a416198f1e0bf5a2ca9f347bbac.tar.gz otp-7ab33f49185d5a416198f1e0bf5a2ca9f347bbac.tar.bz2 otp-7ab33f49185d5a416198f1e0bf5a2ca9f347bbac.zip |
Change the expected return value for on_load functions
An on_load function is supposed to return 'true' to indicate
that the module should be loaded, and 'false' if it should be
unloaded. But returning any other term, as well as causing an
exception, will also unload the module.
Since we don't like boolean values mixed with other values,
change the expected return value as follows:
* If 'ok' is returned, the module will remain loaded and become
callable.
* If any other value is returned (or an exception is generated),
the module will be unloaded. Also, if the returned value is
not an atom, send a warning message to the error_logger
(using error_logger:warning_msg/2).
The new interpretation of the return value means that an on_load
function can now directly return the return value from
erlang:load_nif/2.
Diffstat (limited to 'erts/preloaded')
-rw-r--r-- | erts/preloaded/ebin/init.beam | bin | 44460 -> 44460 bytes | |||
-rw-r--r-- | erts/preloaded/src/init.erl | 5 |
2 files changed, 1 insertions, 4 deletions
diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam Binary files differindex 7b6bafd1af..be1f71e6c5 100644 --- a/erts/preloaded/ebin/init.beam +++ b/erts/preloaded/ebin/init.beam diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl index c6f4c62f63..c0b3d286e8 100644 --- a/erts/preloaded/src/init.erl +++ b/erts/preloaded/src/init.erl @@ -1357,10 +1357,7 @@ run_on_load_handlers([M|Ms]) -> {Pid,Ref} = spawn_monitor(Fun), receive {'DOWN',Ref,process,Pid,OnLoadRes} -> - Keep = if - is_boolean(OnLoadRes) -> OnLoadRes; - true -> false - end, + Keep = OnLoadRes =:= ok, erlang:finish_after_on_load(M, Keep), case Keep of false -> |