diff options
author | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2014-10-16 14:11:49 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2014-10-20 13:34:37 +0200 |
commit | ae89aa330fd1628e0780bfbdf7ceb772412399a6 (patch) | |
tree | f02b7ed9363c752b2f2541331a0cbd0efc17480c | |
parent | 0c71cbea5472191ca5131e18b3f676eae8a51bf4 (diff) |
logging: Fix qCleanupFuncinfo to not mangle Objective-C message names
Change-Id: I823566ba72668c611d225aa92c4d09a53cabe8fc
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r-- | src/corelib/global/qlogging.cpp | 5 | ||||
-rw-r--r-- | tests/auto/corelib/global/qlogging/tst_qlogging.cpp | 16 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 2a4f2dd4d6..f356bab42d 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -653,9 +653,10 @@ Q_AUTOTEST_EXPORT QByteArray qCleanupFuncinfo(QByteArray info) int pos; - // skip trailing [with XXX] for templates (gcc) + // Skip trailing [with XXX] for templates (gcc), but make + // sure to not affect Objective-C message names. pos = info.size() - 1; - if (info.endsWith(']')) { + if (info.endsWith(']') && !(info.startsWith('+') || info.startsWith('-'))) { while (--pos) { if (info.at(pos) == '[') info.truncate(pos); diff --git a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp index f7d8bda190..35bd518b3a 100644 --- a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp +++ b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp @@ -670,6 +670,22 @@ void tst_qmessagehandler::cleanupFuncinfo_data() QTest::newRow("gcc_39") << "int TestClass1::operator>(int)" << "TestClass1::operator>"; + + QTest::newRow("objc_1") + << "-[SomeClass someMethod:withArguments:]" + << "-[SomeClass someMethod:withArguments:]"; + + QTest::newRow("objc_2") + << "+[SomeClass withClassMethod:withArguments:]" + << "+[SomeClass withClassMethod:withArguments:]"; + + QTest::newRow("objc_3") + << "-[SomeClass someMethodWithoutArguments]" + << "-[SomeClass someMethodWithoutArguments]"; + + QTest::newRow("objc_4") + << "__31-[SomeClass someMethodSchedulingBlock]_block_invoke" + << "__31-[SomeClass someMethodSchedulingBlock]_block_invoke"; } #endif |