Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/elfmz/far2l.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelfmz <fenix1905@tut.by>2022-02-06 02:33:32 +0300
committerelfmz <fenix1905@tut.by>2022-02-06 02:33:32 +0300
commit058ab0394bc50ee585da1f6029d867793fb00c53 (patch)
tree7eadbec11eee284c460572bd76f3f3e5d2a72771 /far2l/src/fileedit.cpp
parent3f0135063b6e9e6bf3eea3f0a94cc4112b22b874 (diff)
Editor: preserve invalid UTF8 sequences (fix #1233)
Diffstat (limited to 'far2l/src/fileedit.cpp')
-rw-r--r--far2l/src/fileedit.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/far2l/src/fileedit.cpp b/far2l/src/fileedit.cpp
index 2cd48ee8..7fafbf39 100644
--- a/far2l/src/fileedit.cpp
+++ b/far2l/src/fileedit.cpp
@@ -1942,6 +1942,8 @@ int FileEditor::SaveFile(const wchar_t *Name,int Ask, bool bSaveAs, int TextForm
size_t LineNumber=0;
CachedWrite Cache(EditFile);
+ std::string tmpstr;
+
for (Edit *CurPtr=m_editor->TopList; CurPtr; CurPtr=CurPtr->m_next,LineNumber++)
{
DWORD CurTime=WINPORT(GetTickCount)();
@@ -1981,6 +1983,14 @@ int FileEditor::SaveFile(const wchar_t *Name,int Ask, bool bSaveAs, int TextForm
bError = true;
}
}
+ else if (codepage == CP_UTF8)
+ {
+ Wide2MB(SaveStr, Length, tmpstr);
+ if (EndLength)
+ Wide2MB(EndSeq, EndLength, tmpstr, true);
+ if (!tmpstr.empty() && !Cache.Write(tmpstr.data(),tmpstr.size()))
+ bError = true;
+ }
else
{
if (Length)