summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization/qjsonobject.h
diff options
context:
space:
mode:
authorMichał Łoś <michal.los@siili.com>2024-08-13 15:53:39 +0200
committerMarc Mutz <marc.mutz@qt.io>2024-08-30 08:04:40 +0000
commit364ac13a79a8fff0447a62e9af5588db397c0bfd (patch)
tree26f861218757fac6b306c4bf2e6d0688a99a1856 /src/corelib/serialization/qjsonobject.h
parentb079e38927ff6baad0ccfaaba42ec5609a612659 (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