summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/quuid.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2017-02-14 01:26:25 +0100
committerMarc Mutz <marc.mutz@kdab.com>2017-02-15 20:14:27 +0000
commit04d6495bf773a6bb0d4fa6980df22d3b81a605b0 (patch)
tree3372ff44c12f502402f80704c058082d1d27257b /src/corelib/plugin/quuid.cpp
parenta5febadac55741b4b48f25463a310835cc8bde19 (diff)
Make some atomic counters zero-based
A variable of static storage duration that is not zero-initialized takes up space in the DATA segment of the executable. By making the counters start at zero and adding the initial value afterwards, we move them over to the BSS segment, which does not take up space in the executable. Wrap atomics used across function boundaries into small functions, to avoid code duplication and to increase readability. Change-Id: Ida6ed316ecb8fe20da62a9577161349e14de5aed Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/plugin/quuid.cpp')
-rw-r--r--src/corelib/plugin/quuid.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
index f11ac6548b..1a7073a069 100644
--- a/src/corelib/plugin/quuid.cpp
+++ b/src/corelib/plugin/quuid.cpp
@@ -968,10 +968,10 @@ QUuid QUuid::createUuid()
if (!uuidseed.hasLocalData())
{
int *pseed = new int;
- static QBasicAtomicInt serial = Q_BASIC_ATOMIC_INITIALIZER(2);
+ static QBasicAtomicInt serial;
qsrand(*pseed = QDateTime::currentSecsSinceEpoch()
+ quintptr(&pseed)
- + serial.fetchAndAddRelaxed(1));
+ + 2 + serial.fetchAndAddRelaxed(1));
uuidseed.setLocalData(pseed);
}
#else