diff options
-rw-r--r-- | src/corelib/io/qbuffer.cpp | 19 | ||||
-rw-r--r-- | src/corelib/io/qbuffer.h | 4 |
2 files changed, 16 insertions, 7 deletions
diff --git a/src/corelib/io/qbuffer.cpp b/src/corelib/io/qbuffer.cpp index af71af1fc4..dee4295966 100644 --- a/src/corelib/io/qbuffer.cpp +++ b/src/corelib/io/qbuffer.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qbuffer.h" +#include <QtCore/qmetaobject.h> #include "private/qiodevice_p.h" QT_BEGIN_NAMESPACE @@ -459,9 +460,11 @@ qint64 QBuffer::writeData(const char *data, qint64 len) \reimp \internal */ -void QBuffer::connectNotify(const char *signal) +void QBuffer::connectNotify(const QMetaMethod &signal) { - if (strcmp(signal + 1, "readyRead()") == 0 || strcmp(signal + 1, "bytesWritten(qint64)") == 0) + static const QMetaMethod readyReadSignal = QMetaMethod::fromSignal(&QBuffer::readyRead); + static const QMetaMethod bytesWrittenSignal = QMetaMethod::fromSignal(&QBuffer::bytesWritten); + if (signal == readyReadSignal || signal == bytesWrittenSignal) d_func()->signalConnectionCount++; } @@ -469,10 +472,16 @@ void QBuffer::connectNotify(const char *signal) \reimp \internal */ -void QBuffer::disconnectNotify(const char *signal) +void QBuffer::disconnectNotify(const QMetaMethod &signal) { - if (!signal || strcmp(signal + 1, "readyRead()") == 0 || strcmp(signal + 1, "bytesWritten(qint64)") == 0) - d_func()->signalConnectionCount--; + if (signal.isValid()) { + static const QMetaMethod readyReadSignal = QMetaMethod::fromSignal(&QBuffer::readyRead); + static const QMetaMethod bytesWrittenSignal = QMetaMethod::fromSignal(&QBuffer::bytesWritten); + if (signal == readyReadSignal || signal == bytesWrittenSignal) + d_func()->signalConnectionCount--; + } else { + d_func()->signalConnectionCount = 0; + } } #endif diff --git a/src/corelib/io/qbuffer.h b/src/corelib/io/qbuffer.h index 8b42363f24..ffbc554ec4 100644 --- a/src/corelib/io/qbuffer.h +++ b/src/corelib/io/qbuffer.h @@ -88,8 +88,8 @@ public: protected: #ifndef QT_NO_QOBJECT - void connectNotify(const char*); - void disconnectNotify(const char*); + void connectNotify(const QMetaMethod &); + void disconnectNotify(const QMetaMethod &); #endif qint64 readData(char *data, qint64 maxlen); qint64 writeData(const char *data, qint64 len); |