Fix corrupted file loading for Windows full UTF-8 Code page System

Fix corrupted file loading for UTF-8 files bigger that the Notepad++ blockSize when using default system CP 65001.

Notepad++ loads files in chunks of blockSize (128 * 1024 + 4 == 131076). For the 1st chunk, it detects the possible BOM present, but for the later chunks not.
If there is the Windows Region Administrative feature "Beta: Use Unicode UTF-8 for worldwide language support" ON, Notepad++ currently fails to correctly set the file encoding for the later file-chunks loaded.

The wrong logic was introduced by:
8149f72#diff-2d5c277be2799a7e43a90232d8ef9add2e788e252c8692bf9416abc69836957d

Fix #17234, close #17237
This commit is contained in:
xomx 2025-11-26 16:16:59 +01:00 committed by Don Ho
parent 86e3be5f6e
commit 878b00e53f

View File

@ -1976,6 +1976,7 @@ bool FileManager::loadFileData(Document doc, int64_t fileSize, const wchar_t * f
size_t lenConvert = 0; //just in case conversion results in 0, but file not empty
bool isFirstTime = true;
int incompleteMultibyteChar = 0;
bool hasBOM = false;
do
{
@ -1988,7 +1989,6 @@ bool FileManager::loadFileData(Document doc, int64_t fileSize, const wchar_t * f
if (lenFile == 0) break;
bool hasBOM = false;
if (isFirstTime)
{
NppParameters& nppParamInst = NppParameters::getInstance();