aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2009-12-10 10:21:55 +0100
committerBjörn Gustavsson <[email protected]>2009-12-13 15:42:36 +0100
commit7ab33f49185d5a416198f1e0bf5a2ca9f347bbac (patch)
tree80e5c93a0df2b1583601d2fcfff29071918715e7 /erts/preloaded
parent9855ed863b58f7325f39b00c60813198ec41f528 (diff)
downloadotp-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.beambin44460 -> 44460 bytes
-rw-r--r--erts/preloaded/src/init.erl5
2 files changed, 1 insertions, 4 deletions
diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam
index 7b6bafd1af..be1f71e6c5 100644
--- a/erts/preloaded/ebin/init.beam
+++ b/erts/preloaded/ebin/init.beam
Binary files differ
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 ->