From cd0b651d43c303dbe0b8016a1305ab9e5fef6449 Mon Sep 17 00:00:00 2001
From: Alex Astashyn <alex@Alexs-MacBook-Pro.local>
Date: Mon, 12 Dec 2016 19:46:47 -0500
Subject: [PATCH] Tweaked check for preserved sign; added LCOV_EXCL_LINE

---
 src/json.hpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/json.hpp b/src/json.hpp
index 867afbb3..b526400c 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -9103,7 +9103,7 @@ basic_json_parser_66:
 
                 if (!p) 
                 {
-                    return false;
+                    return false; // LCOV_EXCL_LINE
                 }
 
                 if (*p == '-' or *p == '+') 
@@ -9113,7 +9113,7 @@ basic_json_parser_66:
 
                 if (p == m_end) 
                 {
-                    return false;
+                    return false; // LCOV_EXCL_LINE
                 }
 
                 while (p < m_end and *p >= '0' 
@@ -9252,11 +9252,11 @@ basic_json_parser_66:
                 value = static_cast<T>(x);
 
                 return x == static_cast<decltype(x)>(value) // x fits into destination T
+                   and (x < 0) == (value < 0)               // preserved sign
                    and (x != 0 or is_integral())            // strto[u]ll did nto fail
                    and errno == 0                           // strto[u]ll did not overflow
                    and m_start < m_end                      // token was not empty
-                   and endptr == m_end                      // parsed entire token exactly
-                   and (x < 0) == (*m_start == '-');        // input was sign-compatible
+                   and endptr == m_end;                      // parsed entire token exactly
             }
 
 #else // parsing integral types manually