summaryrefslogtreecommitdiff
path: root/libavutil/libm.h
diff options
context:
space:
mode:
authorGanesh Ajjanagadde <gajjanagadde@gmail.com>2015-11-24 21:29:35 -0500
committerGanesh Ajjanagadde <gajjanagadde@gmail.com>2015-11-24 21:33:13 -0500
commit29af74e4e36daa3aa3ebafede844412d8cfff32b (patch)
treea479d0f7a7dc93995caab721ea4fb20d4434f21e /libavutil/libm.h
parent4f99308ed36b0fc5c2bd2121ad350aa3d80b1275 (diff)
avutil/libm: fix isnan compatibility hack
Commit 14ea4151d7c3c26500193f11ac661ed20c7c2b9c had a bug in that the conversion of the uint64_t result to an int (the return signature) would lead to implementation defined behavior, and in this case simply returned 0 for NAN. A fix via AND'ing the result with 1 does the trick, simply by ensuring a 0 or 1 return value. Patch tested with FATE on x86-64, GNU/Linux by forcing the compatibility code via an ifdef hack suggested by Michael. Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Diffstat (limited to 'libavutil/libm.h')
-rw-r--r--libavutil/libm.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavutil/libm.h b/libavutil/libm.h
index 9e5ec5d43c..6d8bd685b7 100644
--- a/libavutil/libm.h
+++ b/libavutil/libm.h
@@ -123,7 +123,7 @@ static av_always_inline av_const int avpriv_isnan(double x)
uint64_t v = av_double2int(x);
if ((v & 0x7ff0000000000000) != 0x7ff0000000000000)
return 0;
- return v & 0x000fffffffffffff;
+ return (v & 0x000fffffffffffff) && 1;
}
#define isnan(x) \