diff options
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
| -rw-r--r-- | src/corelib/kernel/qobject.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 3cf3e9d39ba..991d88c6ee0 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3055,8 +3055,8 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign &smeta, signalName, signalTypes.size(), signalTypes.constData()); if (signal_index < 0) { // check for normalized signatures - pinnedSignal = QMetaObject::normalizedSignature(signal - 1); - signal = pinnedSignal.constData() + 1; + pinnedSignal = QMetaObject::normalizedSignature(signal); + signal = pinnedSignal.constData(); signalTypes.clear(); signalName = QMetaObjectPrivate::decodeMethodSignature(signal, signalTypes); @@ -3321,19 +3321,22 @@ bool QObject::disconnect(const QObject *sender, const char *signal, return false; } + const char *signal_arg = signal; if (signal) { if (!check_signal_macro(sender, signal, "disconnect", "unbind")) return false; + ++signal; // skip code } + const char *method_arg = method; int membcode = -1; if (method) { membcode = extract_code(method); if (!check_method_code(membcode, receiver, method, "disconnect")) return false; + ++method; // skip code } - const char *signal_arg = signal; QByteArray pinnedSignal; bool signal_found = false; if (signal) { @@ -3342,15 +3345,12 @@ bool QObject::disconnect(const QObject *sender, const char *signal, signal = pinnedSignal.constData(); } QT_CATCH (const std::bad_alloc &) { // if the signal is already normalized, we can continue. - if (sender->metaObject()->indexOfSignal(signal + 1) == -1) + if (sender->metaObject()->indexOfSignal(signal) == -1) QT_RETHROW; } - - signal++; // skip code } QByteArray pinnedMethod; - const char *method_arg = method; bool method_found = false; if (method) { QT_TRY { @@ -3358,11 +3358,9 @@ bool QObject::disconnect(const QObject *sender, const char *signal, method = pinnedMethod.constData(); } QT_CATCH(const std::bad_alloc &) { // if the method is already normalized, we can continue. - if (receiver->metaObject()->indexOfMethod(method + 1) == -1) + if (receiver->metaObject()->indexOfMethod(method) == -1) QT_RETHROW; } - - method++; // skip code } /* We now iterate through all the sender's and receiver's meta |
