From 9b0a2b5d79a205312048a214af41a7f104c8d62a Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 11 Jul 2020 20:13:09 +0200 Subject: [PATCH] fix error in dub project due to a breaking change in FCL >= 3.2.0 TJSonParser now fully loads the TStream passed in the ctor instead of reading from its position(), --- src/u_dubproject.pas | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/u_dubproject.pas b/src/u_dubproject.pas index aac7ab87..300052e8 100644 --- a/src/u_dubproject.pas +++ b/src/u_dubproject.pas @@ -770,9 +770,10 @@ end; procedure TDubProject.loadFromFile(const fname: string); var - loader: TMemoryStream; + loader: TStringStream; parser : TJSONParser; ext: string; + s: string = ''; bom: dword = 0; begin fFilename := fname; @@ -784,7 +785,7 @@ begin fIsSdl := false; if ext = '.JSON' then begin - loader := TMemoryStream.Create; + loader := TStringStream.Create(); try loader.LoadFromFile(fFilename); // skip BOMs, they crash the parser @@ -815,8 +816,10 @@ begin else loader.Position:= 0; // + setLength(s, loader.Size - loader.Position); + loader.Read(s[1], loader.Size - loader.Position); FreeAndNil(fJSON); - parser := TJSONParser.Create(loader, [joIgnoreTrailingComma, joUTF8]); + parser := TJSONParser.Create(s, [joIgnoreTrailingComma, joUTF8]); try try fJSON := parser.Parse as TJSONObject;