diff --git a/CHANGELOG.md b/CHANGELOG.md index 18240dc5..2096a8b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Fixed warning "unused variable" with GCC 4.4 (issue #912) + v5.13.4 ------- diff --git a/src/ArduinoJson/TypeTraits/FloatTraits.hpp b/src/ArduinoJson/TypeTraits/FloatTraits.hpp index b16344c8..f483c9fc 100644 --- a/src/ArduinoJson/TypeTraits/FloatTraits.hpp +++ b/src/ArduinoJson/TypeTraits/FloatTraits.hpp @@ -99,12 +99,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); } }; @@ -151,12 +147,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() {