From 5e343611bf3b03555695c1f5f2b5922f6333694e Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Oct 2011 13:19:42 +0200 Subject: [PATCH] Add some asserts to closure. --- src/core/closure.cpp | 18 ++++++++++++------ src/core/closure.h | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/core/closure.cpp b/src/core/closure.cpp index 66595bab6..2385cf591 100644 --- a/src/core/closure.cpp +++ b/src/core/closure.cpp @@ -32,19 +32,25 @@ Closure::Closure(QObject* sender, const QMetaObject* meta_receiver = receiver->metaObject(); QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1); - slot_ = meta_receiver->method( - meta_receiver->indexOfSlot(normalised_slot.constData())); + const int index = meta_receiver->indexOfSlot(normalised_slot.constData()); + Q_ASSERT(index != -1); + slot_ = meta_receiver->method(index); - connect(sender, signal, SLOT(Invoked())); - connect(sender, SIGNAL(destroyed()), SLOT(Cleanup())); + Connect(sender, signal); } Closure::Closure(QObject* sender, const char* signal, std::tr1::function callback) : callback_(callback) { - connect(sender, signal, SLOT(Invoked())); - connect(sender, SIGNAL(destroyed()), SLOT(Cleanup())); + Connect(sender, signal); +} + +void Closure::Connect(QObject* sender, const char* signal) { + bool success = connect(sender, signal, SLOT(Invoked())); + Q_ASSERT(success); + success = connect(sender, SIGNAL(destroyed()), SLOT(Cleanup())); + Q_ASSERT(success); } void Closure::Invoked() { diff --git a/src/core/closure.h b/src/core/closure.h index fe215a67c..6e648580f 100644 --- a/src/core/closure.h +++ b/src/core/closure.h @@ -64,6 +64,8 @@ class Closure : public QObject { void Cleanup(); private: + void Connect(QObject* sender, const char* signal); + QMetaMethod slot_; std::tr1::function callback_;