From bff1aa512daa0bb4b4ec80117cb9a45d73cc2499 Mon Sep 17 00:00:00 2001 From: James Zern Date: Fri, 11 Sep 2015 14:59:14 -0700 Subject: [PATCH] mkvparser: add msvc compatibility for isnan/isinf fixes build errors related to these functions on visual studio prior to 2013 Change-Id: I8272f9065195e5447055aad7d0f899afa0294ea9 --- mkvparser.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mkvparser.cpp b/mkvparser.cpp index 4306a51..51c7f48 100644 --- a/mkvparser.cpp +++ b/mkvparser.cpp @@ -8,6 +8,11 @@ #include "mkvparser.hpp" +#if defined(_MSC_VER) && _MSC_VER < 1800 +#include // _isnan() / _finite() +#define MSC_COMPAT +#endif + #include #include #include @@ -23,6 +28,14 @@ namespace mkvparser { +#ifdef MSC_COMPAT +inline bool isnan(double val) { return !!_isnan(val); } +inline bool isinf(double val) { return !_finite(val); } +#else +inline bool isnan(double val) { return std::isnan(val); } +inline bool isinf(double val) { return std::isinf(val); } +#endif // MSC_COMPAT + IMkvReader::~IMkvReader() {} template Type* SafeArrayAlloc(unsigned long long num_elements, @@ -267,7 +280,7 @@ long UnserializeFloat(IMkvReader* pReader, long long pos, long long size_, result = d; } - if (std::isinf(result) || std::isnan(result)) + if (mkvparser::isinf(result) || mkvparser::isnan(result)) return E_FILE_FORMAT_INVALID; return 0;