diff options
| author | Michał Łoś <michal.los@siili.com> | 2024-08-13 15:53:39 +0200 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2024-08-30 08:04:40 +0000 |
| commit | 364ac13a79a8fff0447a62e9af5588db397c0bfd (patch) | |
| tree | 26f861218757fac6b306c4bf2e6d0688a99a1856 /src/corelib/serialization/qjsonobject.h | |
| parent | b079e38927ff6baad0ccfaaba42ec5609a612659 (diff) | |
VxWorks: std::uninitialized_value_construct bug workaround
VxWorks 24.03 (and probably earlier versions as well) implementation of
`std::uninitialized_value_construct` is calling `placement new` for each
element in passed range this way (simplified):
``` new (memPtr) T; ```
This is causing default-initialization, which for class type calls
default constructor, but for non-class non-array types does nothing.
This is the case for, for example, trivial classes, for which no
constructor is called, leaving memory in random state. This is a bug in
VxWorks standard library.
To work around this problem, introduce q17memory.h header, which
introduces `q17::uninitialized_value_construct`. This function is simply
taken from std implementation on all platforms except VxWorks, where
it's implemented in a standard-compliant way.
Amends 33155f06bf5000c958a178689a2553391e155891.
Task-number: QTBUG-115777
Change-Id: I1456c801334b50a9fc8b82cefb8c5d216b57923f
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/corelib/serialization/qjsonobject.h')
0 files changed, 0 insertions, 0 deletions
