diff --git a/example/messagereader/messagereader.cpp b/example/messagereader/messagereader.cpp index 436af85..50255b3 100644 --- a/example/messagereader/messagereader.cpp +++ b/example/messagereader/messagereader.cpp @@ -54,7 +54,7 @@ struct MessageHandler enum State { kExpectObjectStart, kExpectNameOrObjectEnd, - kExpectValue, + kExpectValue }state_; std::string name_; }; diff --git a/include/rapidjson/encodings.h b/include/rapidjson/encodings.h index 6bc8aec..24a24b6 100644 --- a/include/rapidjson/encodings.h +++ b/include/rapidjson/encodings.h @@ -30,6 +30,7 @@ RAPIDJSON_DIAG_OFF(4702) // unreachable code #elif defined(__GNUC__) RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(effc++) +RAPIDJSON_DIAG_OFF(overflow) #endif RAPIDJSON_NAMESPACE_BEGIN diff --git a/include/rapidjson/internal/biginteger.h b/include/rapidjson/internal/biginteger.h index 3e97920..5719a2a 100755 --- a/include/rapidjson/internal/biginteger.h +++ b/include/rapidjson/internal/biginteger.h @@ -252,7 +252,8 @@ private: (*outHigh)++; return low; #elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) - unsigned __int128 p = static_cast(a) * static_cast(b); + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast(a) * static_cast(b); p += k; *outHigh = p >> 64; return static_cast(p); diff --git a/include/rapidjson/internal/diyfp.h b/include/rapidjson/internal/diyfp.h index 174b9fa..1b36f66 100644 --- a/include/rapidjson/internal/diyfp.h +++ b/include/rapidjson/internal/diyfp.h @@ -75,7 +75,8 @@ struct DiyFp { h++; return DiyFp(h, e + rhs.e + 64); #elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) - unsigned __int128 p = static_cast(f) * static_cast(rhs.f); + __extension__ typedef unsigned __int128 uint128; + uint128 p = static_cast(f) * static_cast(rhs.f); uint64_t h = p >> 64; uint64_t l = static_cast(p); if (l & (uint64_t(1) << 63)) // rounding