diff --git a/src/jiffy.erl b/src/jiffy.erl index d47a670..fb080eb 100644 --- a/src/jiffy.erl +++ b/src/jiffy.erl @@ -79,18 +79,15 @@ finish_encode(_, _) -> init() -> - SoName = case code:priv_dir(?MODULE) of - {error, bad_name} -> - case filelib:is_dir(filename:join(["..", priv])) of - true -> - filename:join(["..", priv, ?MODULE]); - _ -> - filename:join([priv, ?MODULE]) - end; - Dir -> - filename:join(Dir, ?MODULE) + PrivDir = case code:priv_dir(?MODULE) of + {error, _} -> + EbinDir = filename:dirname(code:which(?MODULE)), + AppPath = filename:dirname(EbinDir), + filename:join(AppPath, "priv"); + Path -> + Path end, - erlang:load_nif(SoName, 0). + erlang:load_nif(filename:join(PrivDir, "jiffy"), 0). not_loaded(Line) ->