From 46589056c399191e1afe0b2ddb1e2f0570fa8ddc Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 12 Feb 2019 12:45:50 +0100 Subject: [PATCH] QObject: count declarative receivers also if there are no C++ ones Change-Id: If998cdd5eeb8a3ae85cd540cc9c1fd0c051e1d4b Fixes: QTBUG-73753 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/kernel/qobject.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 257575e1414..7b9689f1cf5 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2404,8 +2404,7 @@ int QObject::receivers(const char *signal) const { Q_D(const QObject); int receivers = 0; - QObjectPrivate::ConnectionData *cd = d->connections.load(); - if (signal && cd) { + if (signal) { QByteArray signal_name = QMetaObject::normalizedSignature(signal); signal = signal_name; #ifndef QT_NO_DEBUG @@ -2429,8 +2428,9 @@ int QObject::receivers(const char *signal) const signal_index); } + QObjectPrivate::ConnectionData *cd = d->connections.load(); QBasicMutexLocker locker(signalSlotLock(this)); - if (signal_index < cd->signalVector.count()) { + if (cd && signal_index < cd->signalVector.count()) { const QObjectPrivate::Connection *c = cd->signalVector.at(signal_index).first; while (c) {