diff --git a/rebar.config.script b/rebar.config.script index 358e71c..47df1a2 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -24,6 +24,9 @@ CFlags = [ {require_min_otp_vsn, "21"}, + + {xref_checks, [undefined_function_calls]}, + {port_env, [ %% Default darwin ldflags causes loading of system sqlite. Removed -bundle flag. {"darwin", "DRV_LDFLAGS", @@ -46,5 +49,14 @@ CFlags = {provider_hooks, [{post, [{compile, {pc, compile}}, - {clean, {pc, clean}}]}]} + {clean, {pc, clean}}]}]}, + + {dialyzer, [ + {warnings, [ + unmatched_returns, + error_handling, + race_conditions + % underspecs + ]} + ]} ]. diff --git a/src/esqlite3.erl b/src/esqlite3.erl index 6663da0..9e091b6 100644 --- a/src/esqlite3.erl +++ b/src/esqlite3.erl @@ -361,8 +361,12 @@ exec(Sql, [], #connection{raw_connection=RawConnection}, Timeout) -> receive_answer(RawConnection, Ref, Timeout); exec(Sql, Params, Connection, Timeout) -> {ok, Statement} = prepare(Sql, Connection, Timeout), - bind(Statement, Params), - step(Statement, Timeout). + case bind(Statement, Params) of + ok -> + step(Statement, Timeout); + {error, _}=Error -> + Error + end. %% @doc Return the number of affected rows of last statement.