From 92ba1bcdfa2b500c4588fee8b9af7f67a1634537 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 22 Sep 2015 12:56:52 +0200 Subject: [PATCH] fix, JSON loader, skip BOM --- src/ce_dubproject.pas | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/ce_dubproject.pas b/src/ce_dubproject.pas index dee3bbd9..720202c0 100644 --- a/src/ce_dubproject.pas +++ b/src/ce_dubproject.pas @@ -153,14 +153,28 @@ procedure TCEDubProject.loadFromFile(const aFilename: string); var loader: TMemoryStream; parser : TJSONParser; + bom: dword = 0; begin loader := TMemoryStream.Create; try fBasePath := extractFilePath(aFilename); fFilename := aFilename; loader.LoadFromFile(fFilename); + // skip BOM, this crashes the parser + loader.Read(bom, 4); + if (bom and $BFBBEF) = $BFBBEF then + loader.Position:= 3 + else if bom = $FFFE0000 then + loader.Position:= 4 + else if bom = $FEFF then + loader.Position:= 4 + else if (bom and $FEFF) = $FEFF then + loader.Position:= 2 + else if (bom and $FFFE) = $FFFE then + loader.Position:= 2; + // fJSON.Free; - parser := TJSONParser.Create(loader); + parser := TJSONParser.Create(loader, false); try fJSON := parser.Parse as TJSONObject; finally