From 7314545b3428890625d78ec7128220a668e5a039 Mon Sep 17 00:00:00 2001 From: Pavel Abalikhin Date: Mon, 24 Dec 2018 13:01:41 +0300 Subject: [PATCH] Stacktrace workaround for compatibility with OTP 21 --- src/qdate.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/qdate.erl b/src/qdate.erl index 57cab47..f3c88b0 100644 --- a/src/qdate.erl +++ b/src/qdate.erl @@ -131,6 +131,13 @@ parse/1 ]). +%% erlang:get_stacktrace/0 is deprecated in OTP 21 +-ifndef(OTP_RELEASE). +-define(WITH_STACKTRACE(T, R, S), T:R -> S = erlang:get_stacktrace(), ). +-else. +-define(WITH_STACKTRACE(T, R, S), T:R:S ->). +-endif. + %% This the value in gregorian seconds for jan 1st 1970, 12am %% It's used to convert to and from unixtime, since unixtime starts %% 1970-01-01 12:00am @@ -1076,8 +1083,7 @@ try_parsers(RawDate,[{ParserKey,Parser}|Parsers]) -> Other -> throw({invalid_parser_return_value,[{parser_key,ParserKey},{return,Other}]}) catch - Error:Reason -> - Stacktrace = erlang:get_stacktrace(), + ?WITH_STACKTRACE(Error, Reason, Stacktrace) throw({error_in_parser,[{error,{Error,Reason}},{parser_key,ParserKey}, {stacktrace, Stacktrace}]}) end.