Correct JSON representation of big integers 12/113712/1
authorJakub Skowron <j.skowron@samsung.com>
Wed, 8 Feb 2017 11:17:37 +0000 (12:17 +0100)
committerJakub Skowron <j.skowron@samsung.com>
Wed, 8 Feb 2017 11:17:37 +0000 (12:17 +0100)
Previously large longs, e.g. file timestamp, where incorrectly
converted to JSON, resulting in truncated values

Change-Id: I91a35cdd6ef019c8aa22b1ed1dc200bcf96dc9e5
Signed-off-by: Jakub Skowron <j.skowron@samsung.com>
src/common/picojson.h

index eca7efc9f04c3bbb4207377d6cc94a881b915d4b..2f9fb6d2bc25bad57dae6af03a24f5e329f43af7 100644 (file)
@@ -268,11 +268,7 @@ namespace picojson {
     case number_type:    {
       std::stringstream num_str;
       num_str.imbue( std::locale::classic() );
-      double ignored;
-      if( std::modf(u_.number_, &ignored) != 0 || std::fabs(u_.number_) >= (1ULL << 53) ) {
-        num_str << std::scientific << std::setprecision(16);
-      }
-      num_str << u_.number_;
+      num_str << std::setprecision(16) << u_.number_;
       return num_str.str();
     }
     case string_type:    return *u_.string_;