diff options
author | David Schulz <david.schulz@qt.io> | 2019-08-26 13:21:46 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-09-12 04:35:38 +0000 |
commit | a21df46481f580d0f74b5f82f3f3ce1df2445129 (patch) | |
tree | 0024e2d7dbe819c3f02b430141d2430d29181986 /src | |
parent | 2aca0c1b28fc0160fb1ed54c90bc5ffc96bd6c1b (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/utils/textfileformat.cpp | 11 |
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()) { |