Parcourir la source

fx: bug fix

master
SisMaker il y a 4 ans
Parent
révision
38f09a0800
2 fichiers modifiés avec 13 ajouts et 10 suppressions
  1. +12
    -9
      src/gen_emm.erl
  2. +1
    -1
      src/gen_ipc.erl

+ 12
- 9
src/gen_emm.erl Voir le fichier

@ -287,8 +287,8 @@ epmRpc(EpmSrv, Cmd) ->
try gen:call(EpmSrv, '$epm_call', Cmd, infinity) of
{ok, Reply} ->
Reply
catch Class:Reason ->
erlang:raise(Class, {Reason, {?MODULE, call, [EpmSrv, Cmd, infinity]}}, ?STACKTRACE())
catch Class:Reason:S ->
erlang:raise(Class, {Reason, {?MODULE, call, [EpmSrv, Cmd, infinity]}}, S)
end.
epmRpc(EpmSrv, Cmd, Timeout) ->
@ -327,9 +327,9 @@ receiveIng(Parent, ServerName, HibernateAfterTimeout, EpmHers, Debug, IsHib) ->
sys:handle_system_msg(Req, From, Parent, ?MODULE, Debug, {ServerName, HibernateAfterTimeout, EpmHers, IsHib}, IsHib);
{'EXIT', Parent, Reason} ->
terminate_server(Reason, Parent, ServerName, EpmHers);
{'$gen_call', From, Request} ->
{'$epm_call', From, Request} ->
epmCallMsg(Parent, ServerName, HibernateAfterTimeout, EpmHers, Debug, From, Request);
{'$gen_info', CmdOrEmpHandler, Event} ->
{'$epm_info', CmdOrEmpHandler, Event} ->
epmInfoMsg(Parent, ServerName, HibernateAfterTimeout, EpmHers, Debug, CmdOrEmpHandler, Event);
Msg ->
handleMsg(Parent, ServerName, HibernateAfterTimeout, EpmHers, Debug, Msg)
@ -395,7 +395,7 @@ handleMsg(Parent, ServerName, HibernateAfterTimeout, EpmHers, Debug, Msg) ->
NewDebug = ?SYS_DEBUG(Debug, ServerName, {in, Msg}),
case Msg of
{'EXIT', From, Reason} ->
NewEpmHers = epmStopOne(EpmHers, From, Reason),
NewEpmHers = epmStopOne(From, EpmHers, Reason),
receiveIng(Parent, ServerName, HibernateAfterTimeout, NewEpmHers, NewDebug, false);
{_From, Tag, stop} ->
try terminate_server(normal, Parent, ServerName, EpmHers)
@ -405,8 +405,11 @@ handleMsg(Parent, ServerName, HibernateAfterTimeout, EpmHers, Debug, Msg) ->
{_From, Tag, get_modules} ->
reply(Tag, get_modules(EpmHers)),
receiveIng(Parent, ServerName, HibernateAfterTimeout, EpmHers, NewDebug, false);
{_From, Tag, which_handlers} ->
reply(Tag, maps:keys(EpmHers)),
receiveIng(Parent, ServerName, HibernateAfterTimeout, EpmHers, NewDebug, false);
_ ->
{NewEpmHers, IsHib} = doNotify(EpmHers, handleInfo, EpmHers, false),
{NewEpmHers, IsHib} = doNotify(EpmHers, handleInfo, Msg, false),
loopEntry(Parent, ServerName, HibernateAfterTimeout, NewEpmHers, NewDebug, IsHib)
end.
@ -514,9 +517,9 @@ doEpmHandle(EpmHers, EpmId, Func, Event, From) ->
catch
throw:Ret ->
handleEpmCR(Ret, EpmHers, EpmId, EpmHer, Event, From);
C:R ->
epmTerminate(EpmHer, {error, {C, R, ?STACKTRACE()}}, Event, crash),
maps:remove(EpmId, EpmHer)
C:R:S ->
epmTerminate(EpmHer, {error, {C, R, S}}, Event, crash),
maps:remove(EpmId, EpmHers)
end;
_ ->
try_reply(From, {error, bad_module}),

+ 1
- 1
src/gen_ipc.erl Voir le fichier

@ -1014,7 +1014,7 @@ doEpmHandle(EpmHers, EpmHandler, Func, Event, From) ->
handleEpmCR(Ret, EpmHers, EpmHer, Event, From);
C:R ->
epmTerminate(EpmHer, {error, {C, R, ?STACKTRACE()}}, Event, crash),
NewEpmHers = maps:remove(EpmHandler, EpmHer),
NewEpmHers = maps:remove(EpmHandler, EpmHers),
{NewEpmHers, false}
end;
_ ->

Chargement…
Annuler
Enregistrer