188eea0eb4
QSharedDataPointer obeys the regular Qt container thread-safety rules: it's thread-safe in const methods but not in mutating ones. QSDP::data() is mutating, which causes a data race. For example, if the contained QLocalePrivate has a refcount of 2 and two threads see that, both threads will try to detach and then replace the pointer, but that pointer replacement is not atomic. Using QExplicitSharedDataPointer makes the race go away, since data() is now non-mutating. QESDP is used only to destroy the QLocalePrivate on program shutdown. Note that there are still race conditions relating to *updating* the locale private. Fixes: QTBUG-73403 Change-Id: Id98140e1c2f0426cabbefffd157ed6ec30a3e08f Reviewed-by: Thomas Sondergaard <thomas@sondergaard.cc> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> |
||
---|---|---|
.. | ||
3rdparty | ||
android | ||
angle | ||
concurrent | ||
corelib | ||
dbus | ||
gui | ||
network | ||
opengl | ||
openglextensions | ||
platformheaders | ||
platformsupport | ||
plugins | ||
printsupport | ||
sql | ||
testlib | ||
tools | ||
widgets | ||
winmain | ||
xml | ||
src.pro |