aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-08-26 13:21:46 +0200
committerDavid Schulz <david.schulz@qt.io>2019-09-12 04:35:38 +0000
commita21df46481f580d0f74b5f82f3f3ce1df2445129 (patch)
tree0024e2d7dbe819c3f02b430141d2430d29181986
parent2aca0c1b28fc0160fb1ed54c90bc5ffc96bd6c1b (diff)
Utils: do not use QIODevice::Text open mode when saving text documents
The mode replaces "\n" with "\r\n" in the byte array after encoding the text, resulting in file contents that cannot be decoded. Change-Id: I8010df56f28a479d516b8bcb887749905fd162ce Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/libs/utils/textfileformat.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/libs/utils/textfileformat.cpp b/src/libs/utils/textfileformat.cpp
index afd4e62e83..ea682edae9 100644
--- a/src/libs/utils/textfileformat.cpp
+++ b/src/libs/utils/textfileformat.cpp
@@ -302,14 +302,11 @@ bool TextFileFormat::writeFile(const QString &fileName, QString plainText, QStri
QTC_ASSERT(codec, return false);
// Does the user want CRLF? If that is native,
- // let QFile do the work, else manually add.
+ // do net let QFile do the work, because it replaces the line ending after the text was encoded,
+ // and this could lead to undecodable file contents.
QIODevice::OpenMode fileMode = QIODevice::NotOpen;
- if (lineTerminationMode == CRLFLineTerminator) {
- if (NativeLineTerminator == CRLFLineTerminator)
- fileMode |= QIODevice::Text;
- else
- plainText.replace(QLatin1Char('\n'), QLatin1String("\r\n"));
- }
+ if (lineTerminationMode == CRLFLineTerminator)
+ plainText.replace(QLatin1Char('\n'), QLatin1String("\r\n"));
FileSaver saver(fileName, fileMode);
if (!saver.hasError()) {