diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2019-02-26 12:57:00 +0100 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2019-02-27 14:27:04 +0000 |
commit | 2ec47d6cb53066b052c13d088e249a44f8a04c79 (patch) | |
tree | f545d2bcc9c185f395b0af51d7c52cea82ea4056 | |
parent | d15b02ff291e3124d9bb8ac3b06b704c292f52ab (diff) |
Fix crash in QTest's signal dumper
It Q_ASSERTs that argv is not a nullptr, so it would fail when an
unconnected signal with 0 arguments was emitted.
Change-Id: I5dd810fbeea5b6b511eff4705efdaa6a55739604
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 1382015d76..63bb386107 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3593,6 +3593,10 @@ void doActivate(QObject *sender, int signal_index, void **argv) const QSignalSpyCallbackSet *signal_spy_set = callbacks_enabled ? qt_signal_spy_callback_set.load() : nullptr; + void *empty_argv[] = { nullptr }; + if (!argv) + argv = empty_argv; + if (!sp->isSignalConnected(signal_index, false)) { // The possible declarative connection is done, and nothing else is connected if (callbacks_enabled && signal_spy_set->signal_begin_callback != nullptr) @@ -3604,10 +3608,6 @@ void doActivate(QObject *sender, int signal_index, void **argv) return; } - void *empty_argv[] = { nullptr }; - if (!argv) - argv = empty_argv; - if (callbacks_enabled && signal_spy_set->signal_begin_callback != nullptr) signal_spy_set->signal_begin_callback(sender, signal_index, argv); Q_TRACE(QMetaObject_activate_begin_signal, sender, signal_index); |