From 68c8697de55e14c7e2474e847a6422e6fe0f65d3 Mon Sep 17 00:00:00 2001 From: Hannah von Reth Date: Sat, 11 Jun 2016 17:30:08 +0200 Subject: [PATCH] Fix a crash with MSVC debug builds. When staticMetaObject.className() was called before qApp->exec(), the application crashed. This happend only in debug builds. Resolves GH-213. (cherry picked from commit 991142d7dfd2e36f0b30089a223aafda3d9b4409) --- src/common/syncableobject.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/common/syncableobject.h b/src/common/syncableobject.h index 1275cc32..af9dfdd2 100644 --- a/src/common/syncableobject.h +++ b/src/common/syncableobject.h @@ -28,12 +28,15 @@ #include "signalproxy.h" -#define SYNCABLE_OBJECT static const int _classNameOffset__; -#define INIT_SYNCABLE_OBJECT(x) const int x ::_classNameOffset__ = QByteArray(staticMetaObject.className()).length() + 2; +#define SYNCABLE_OBJECT static int _classNameOffset__(); +#define INIT_SYNCABLE_OBJECT(x) int x ::_classNameOffset__() {\ + static int offset = QByteArray(x ::staticMetaObject.className()).length() + 2;\ + return offset;\ +}\ #ifdef Q_CC_MSVC -# define SYNC(...) sync_call__(SignalProxy::Server, (__FUNCTION__ + _classNameOffset__), __VA_ARGS__); -# define REQUEST(...) sync_call__(SignalProxy::Client, (__FUNCTION__ + _classNameOffset__), __VA_ARGS__); +# define SYNC(...) sync_call__(SignalProxy::Server, (__FUNCTION__ + _classNameOffset__()), __VA_ARGS__); +# define REQUEST(...) sync_call__(SignalProxy::Client, (__FUNCTION__ + _classNameOffset__()), __VA_ARGS__); #else # define SYNC(...) sync_call__(SignalProxy::Server, __func__, __VA_ARGS__); # define REQUEST(...) sync_call__(SignalProxy::Client, __func__, __VA_ARGS__); @@ -48,7 +51,7 @@ class SyncableObject : public QObject { SYNCABLE_OBJECT - Q_OBJECT + Q_OBJECT public: SyncableObject(QObject *parent = 0); -- 2.20.1