From 41063d069d83868a1b4fe6feed769b37f92f74bb Mon Sep 17 00:00:00 2001 From: Sean Rhea Date: Mon, 10 Aug 2009 18:46:17 -0700 Subject: [PATCH] avoid static constructor ordering bug --- src/Device.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/Device.cpp b/src/Device.cpp index 8efe3b5f1..37443cded 100644 --- a/src/Device.cpp +++ b/src/Device.cpp @@ -18,26 +18,36 @@ #include "Device.h" -static QMap devices; +typedef QMap DevicesMap; + +static DevicesMap *devicesPtr; + +inline DevicesMap & +devices() +{ + if (devicesPtr == NULL) + devicesPtr = new QMap; + return *devicesPtr; +} QList Device::deviceTypes() { - return devices.keys(); + return devices().keys(); } Device & Device::device(const QString &deviceType) { - assert(devices.contains(deviceType)); - return *devices.value(deviceType); + assert(devices().contains(deviceType)); + return *devices().value(deviceType); } bool Device::addDevice(const QString &deviceType, Device *device) { - assert(!devices.contains(deviceType)); - devices.insert(deviceType, device); + assert(!devices().contains(deviceType)); + devices().insert(deviceType, device); return true; }