diff options
author | elfmz <fenix1905@tut.by> | 2022-02-06 02:33:32 +0300 |
---|---|---|
committer | elfmz <fenix1905@tut.by> | 2022-02-06 02:33:32 +0300 |
commit | 058ab0394bc50ee585da1f6029d867793fb00c53 (patch) | |
tree | 7eadbec11eee284c460572bd76f3f3e5d2a72771 /far2l/src/fileedit.cpp | |
parent | 3f0135063b6e9e6bf3eea3f0a94cc4112b22b874 (diff) |
Editor: preserve invalid UTF8 sequences (fix #1233)
Diffstat (limited to 'far2l/src/fileedit.cpp')
-rw-r--r-- | far2l/src/fileedit.cpp | 10 |
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) |