diff --git a/CHANGELOG.md b/CHANGELOG.md index eb277b7c..15b01919 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ArduinoJson: change log HEAD ---- +* Fixed warning "unused variable" with GCC 4.4 (issue #912) * Added a clear error message for `StaticJsonBuffer` and `DynamicJsonBuffer` v6.9.0 (2019-02-26) diff --git a/src/ArduinoJson/Numbers/FloatTraits.hpp b/src/ArduinoJson/Numbers/FloatTraits.hpp index b817217f..051a682e 100644 --- a/src/ArduinoJson/Numbers/FloatTraits.hpp +++ b/src/ArduinoJson/Numbers/FloatTraits.hpp @@ -98,12 +98,8 @@ struct FloatTraits { // we use this function to workaround platforms with single precision literals // (for example, when -fsingle-precision-constant is passed to GCC) static T forge(uint32_t msb, uint32_t lsb) { - union { - uint64_t integerBits; - T floatBits; - }; - integerBits = (uint64_t(msb) << 32) | lsb; - return floatBits; + uint64_t bits = (uint64_t(msb) << 32) | lsb; + return *reinterpret_cast(&bits); } }; @@ -150,12 +146,7 @@ struct FloatTraits { } static T forge(uint32_t bits) { - union { - uint32_t integerBits; - T floatBits; - }; - integerBits = bits; - return floatBits; + return *reinterpret_cast(&bits); } static T nan() {