Fixed warning "cast-align" (issue #914)

This commit is contained in:
Benoit Blanchon
2019-02-28 17:20:01 +01:00
parent d6e7709866
commit f3265d2111
4 changed files with 10 additions and 5 deletions

View File

@ -5,6 +5,7 @@ HEAD
---- ----
* Fixed warning "unused variable" with GCC 4.4 (issue #912) * Fixed warning "unused variable" with GCC 4.4 (issue #912)
* Fixed warning "cast increases required alignment" (issue #914)
* Added a clear error message for `StaticJsonBuffer` and `DynamicJsonBuffer` * Added a clear error message for `StaticJsonBuffer` and `DynamicJsonBuffer`
v6.9.0 (2019-02-26) v6.9.0 (2019-02-26)

View File

@ -23,7 +23,8 @@ template <typename TData>
class ArrayRefBase { class ArrayRefBase {
public: public:
operator VariantConstRef() const { operator VariantConstRef() const {
return VariantConstRef(reinterpret_cast<const VariantData*>(_data)); const void* data = _data; // prevent warning cast-align
return VariantConstRef(reinterpret_cast<const VariantData*>(data));
} }
template <typename Visitor> template <typename Visitor>
@ -94,7 +95,8 @@ class ArrayRef : public ArrayRefBase<CollectionData>,
: base_type(data), _pool(pool) {} : base_type(data), _pool(pool) {}
operator VariantRef() { operator VariantRef() {
return VariantRef(_pool, reinterpret_cast<VariantData*>(_data)); void* data = _data; // prevent warning cast-align
return VariantRef(_pool, reinterpret_cast<VariantData*>(data));
} }
operator ArrayConstRef() const { operator ArrayConstRef() const {

View File

@ -91,7 +91,7 @@ class MemoryPool {
return reinterpret_cast<T*>(allocRight(sizeof(T))); return reinterpret_cast<T*>(allocRight(sizeof(T)));
} }
char* allocRight(size_t bytes) { void* allocRight(size_t bytes) {
if (!canAlloc(bytes)) return 0; if (!canAlloc(bytes)) return 0;
_right -= bytes; _right -= bytes;
return _right; return _right;

View File

@ -18,7 +18,8 @@ template <typename TData>
class ObjectRefBase { class ObjectRefBase {
public: public:
operator VariantConstRef() const { operator VariantConstRef() const {
return VariantConstRef(reinterpret_cast<const VariantData*>(_data)); const void* data = _data; // prevent warning cast-align
return VariantConstRef(reinterpret_cast<const VariantData*>(data));
} }
template <typename Visitor> template <typename Visitor>
@ -140,7 +141,8 @@ class ObjectRef : public ObjectRefBase<CollectionData>,
: base_type(data), _pool(buf) {} : base_type(data), _pool(buf) {}
operator VariantRef() const { operator VariantRef() const {
return VariantRef(_pool, reinterpret_cast<VariantData*>(_data)); void* data = _data; // prevent warning cast-align
return VariantRef(_pool, reinterpret_cast<VariantData*>(data));
} }
operator ObjectConstRef() const { operator ObjectConstRef() const {