From 30caf88a584ac6189bed9584f1ca5acd07df5489 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 13 Feb 2014 12:55:19 +0100 Subject: [PATCH] AndroidRunner: Handle incomplete lines better Task-number: QTCREATORBUG-11472 Change-Id: If2479d3ccb85857a8775894b1f4088702578ecba Reviewed-by: jian liang Reviewed-by: Daniel Teske --- src/plugins/android/androidrunner.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index d496855c5b6..08f7be5bfd2 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -358,11 +358,19 @@ void AndroidRunner::logcatReadStandardError() void AndroidRunner::logcatReadStandardOutput() { - m_logcat += m_adbLogcatProcess.readAllStandardOutput(); - bool keepLastLine = m_logcat.endsWith('\n'); - QByteArray line; + QList lines = m_adbLogcatProcess.readAllStandardOutput().split('\n'); + // lines always contains at least one item + lines[0].prepend(m_logcat); + if (!lines.last().endsWith('\n')) { + // incomplete line + m_logcat = lines.last(); + lines.removeLast(); + } else { + m_logcat.clear(); + } + QByteArray pid(QString::fromLatin1("%1):").arg(m_processPID).toLatin1()); - foreach (line, m_logcat.split('\n')) { + foreach (QByteArray line, lines) { if (!line.contains(pid)) continue; if (line.endsWith('\r')) @@ -376,8 +384,6 @@ void AndroidRunner::logcatReadStandardOutput() emit remoteOutput(line); } - if (keepLastLine) - m_logcat = line; } void AndroidRunner::adbKill(qint64 pid)