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() {