aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_update.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_update.erl')
-rw-r--r--src/ejabberd_update.erl14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/ejabberd_update.erl b/src/ejabberd_update.erl
index 103b20509..a094bd2ce 100644
--- a/src/ejabberd_update.erl
+++ b/src/ejabberd_update.erl
@@ -95,11 +95,17 @@ update() ->
make_script(UpdatedBeams) ->
lists:map(
fun(Module) ->
- {ok, {Module, [{attributes, Attrs}]}} =
+ {ok, {Module, [{attributes, NewAttrs}]}} =
beam_lib:chunks(code:which(Module), [attributes]),
- case lists:keysearch(update_info, 1, Attrs) of
- {value, {_, [{update, Extra}]}} ->
- {update, Module, {advanced, Extra}};
+ CurAttrs = Module:module_info(attributes),
+ case lists:keysearch(update_info, 1, NewAttrs) of
+ {value, {_, [{update, _}]}} ->
+ case lists:keysearch(update_info, 1, CurAttrs) of
+ {value, {_, [{update, Extra}]}} ->
+ {update, Module, {advanced, Extra}};
+ false ->
+ {update, Module, {advanced, 0}}
+ end;
false ->
{load_module, Module}
end