From 43d4fecde59e6d317731ebabbe612a0752781ca8 Mon Sep 17 00:00:00 2001 From: Bernd Weimer Date: Thu, 15 May 2014 15:04:49 +0200 Subject: [PATCH] Fix auto test failure output on QNX On QNX mbstowcs does not ignore last parameter (max) when first (dest) is NULL. Set it to sufficiently large value to yield proper results on QNX. Other platforms (standard libraries) will ignore this value anyway. Change-Id: Ie4695254d45082e151a052bf16de684af3b1ba1e Reviewed-by: Thiago Macieira --- src/testlib/qtestresult.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp index 859f6743cd..8eb1fa2d9c 100644 --- a/src/testlib/qtestresult.cpp +++ b/src/testlib/qtestresult.cpp @@ -49,7 +49,6 @@ #include #include #include -#include static const char *currentAppName = 0; @@ -257,10 +256,11 @@ bool QTestResult::compare(bool success, const char *failureMsg, QTEST_ASSERT(expected); QTEST_ASSERT(actual); - char msg[1024]; + const size_t maxMsgLen = 1024; + char msg[maxMsgLen]; if (QTestLog::verboseLevel() >= 2) { - qsnprintf(msg, 1024, "QCOMPARE(%s, %s)", actual, expected); + qsnprintf(msg, maxMsgLen, "QCOMPARE(%s, %s)", actual, expected); QTestLog::info(msg, file, line); } @@ -268,16 +268,17 @@ bool QTestResult::compare(bool success, const char *failureMsg, failureMsg = "Compared values are not the same"; if (success && QTest::expectFailMode) { - qsnprintf(msg, 1024, "QCOMPARE(%s, %s) returned TRUE unexpectedly.", actual, expected); + qsnprintf(msg, maxMsgLen, + "QCOMPARE(%s, %s) returned TRUE unexpectedly.", actual, expected); } else if (val1 || val2) { - size_t len1 = mbstowcs(NULL, actual, 0); - size_t len2 = mbstowcs(NULL, expected, 0); - qsnprintf(msg, 1024, "%s\n Actual (%s)%*s %s\n Expected (%s)%*s %s", + size_t len1 = mbstowcs(NULL, actual, maxMsgLen); // Last parameter is not ignored on QNX + size_t len2 = mbstowcs(NULL, expected, maxMsgLen); // (result is never larger than this). + qsnprintf(msg, maxMsgLen, "%s\n Actual (%s)%*s %s\n Expected (%s)%*s %s", failureMsg, actual, qMax(len1, len2) - len1 + 1, ":", val1 ? val1 : "", expected, qMax(len1, len2) - len2 + 1, ":", val2 ? val2 : ""); } else - qsnprintf(msg, 1024, "%s", failureMsg); + qsnprintf(msg, maxMsgLen, "%s", failureMsg); delete [] val1; delete [] val2;