summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetaobject.cpp
diff options
context:
space:
mode:
authorJustin McPherson <justin.mcpherson@nokia.com>2010-01-29 06:51:18 (GMT)
committerJustin McPherson <justin.mcpherson@nokia.com>2010-01-29 06:51:18 (GMT)
commit245f2d6d8bf32dcfa28501a9944de00e1e4e1875 (patch)
treebba1eb8796905fb1ed3d92c59f8841cf848bf2aa /src/corelib/kernel/qmetaobject.cpp
parent7123ef04484f283ffa30ece8cb73f541bd81e830 (diff)
parent2f91e9ce0e02f613d68b5b59d00b61c8f4f12c68 (diff)
downloadQt-245f2d6d8bf32dcfa28501a9944de00e1e4e1875.zip
Qt-245f2d6d8bf32dcfa28501a9944de00e1e4e1875.tar.gz
Qt-245f2d6d8bf32dcfa28501a9944de00e1e4e1875.tar.bz2
Merge ../../qt/master
Conflicts: tests/auto/tests.xml
Diffstat (limited to 'src/corelib/kernel/qmetaobject.cpp')
-rw-r--r--src/corelib/kernel/qmetaobject.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index d391893..be1b2ae 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -492,10 +492,14 @@ static inline int indexOfMethodRelative(const QMetaObject **baseObject,
const char *method,
bool normalizeStringData)
{
- while (*baseObject) {
+ const QMetaObject *m;
+ for (m = *baseObject; m; m = *baseObject = m->d.superdata) {
const QMetaObject *const m = *baseObject;
int i = (MethodType == MethodSignal && priv(m->d.data)->revision >= 4)
? (priv(m->d.data)->signalCount - 1) : (priv(m->d.data)->methodCount - 1);
+ if (i < 0)
+ continue;
+
const int end = (MethodType == MethodSlot && priv(m->d.data)->revision >= 4)
? (priv(m->d.data)->signalCount) : 0;
if (!normalizeStringData) {
@@ -513,7 +517,6 @@ static inline int indexOfMethodRelative(const QMetaObject **baseObject,
return i;
}
}
- *baseObject = m->d.superdata;
}
return -1;
}