diff options
-rw-r--r-- | src/corelib/io/qdebug.cpp | 9 | ||||
-rw-r--r-- | tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 23 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp index 56c46d69c9..b0411f9dd9 100644 --- a/src/corelib/io/qdebug.cpp +++ b/src/corelib/io/qdebug.cpp @@ -438,10 +438,18 @@ public: } void restoreState() { + const bool currentSpaces = m_dbg.autoInsertSpaces(); + if (currentSpaces && !m_spaces) + if (m_dbg.stream->buffer.endsWith(QLatin1Char(' '))) + m_dbg.stream->buffer.chop(1); + m_dbg.setAutoInsertSpaces(m_spaces); m_dbg.stream->ts.d_ptr->params = m_streamParams; if (m_dbg.stream->context.version > 1) m_dbg.stream->flags = m_flags; + + if (!currentSpaces && m_spaces) + m_dbg.stream->ts << ' '; } QDebug &m_dbg; @@ -475,7 +483,6 @@ QDebugStateSaver::QDebugStateSaver(QDebug &dbg) QDebugStateSaver::~QDebugStateSaver() { d->restoreState(); - d->m_dbg.maybeSpace(); } QT_END_NAMESPACE diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp index 2143a8874c..767fde7f6c 100644 --- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp +++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp @@ -254,6 +254,17 @@ void tst_QDebug::stateSaver() const MessageHandlerSetter mhs(myMessageHandler); { QDebug d = qDebug(); + d << 42; + { + QDebugStateSaver saver(d); + d << 43; + } + d << 44; + } + QCOMPARE(s_msg, QString::fromLatin1("42 43 44")); + + { + QDebug d = qDebug(); { QDebugStateSaver saver(d); d.nospace() << hex << right << qSetFieldWidth(3) << qSetPadChar('0') << 42; @@ -271,6 +282,18 @@ void tst_QDebug::stateSaver() const d << QStringLiteral("World"); } QCOMPARE(s_msg, QString::fromLatin1("Hello \"World\"")); + + { + QDebug d = qDebug(); + d.noquote().nospace() << QStringLiteral("Hello") << hex << 42; + { + QDebugStateSaver saver(d); + d.resetFormat(); + d << QStringLiteral("World") << 42; + } + d << QStringLiteral("!") << 42; + } + QCOMPARE(s_msg, QString::fromLatin1("Hello2a\"World\" 42!2a")); } void tst_QDebug::veryLongWarningMessage() const |