diff --git a/CHANGELOG.md b/CHANGELOG.md index b7c927f6..51d3cadf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v3.9.15-dev + +## Bugs fixed + +- DUB projects, access violation for subpackages entries described using JSON objects. + # v3.9.14 - binary files for windows available again (#95) diff --git a/src/u_dubproject.pas b/src/u_dubproject.pas index 5c714b18..6c3af1b5 100644 --- a/src/u_dubproject.pas +++ b/src/u_dubproject.pas @@ -1408,7 +1408,12 @@ begin // subpackages if fJSON.findArray('subPackages', arr) then for i := 0 to arr.Count-1 do - tryAddFromFolder(fBasePath + arr.Strings[i]); + begin + if arr.JSONType = jtString then + tryAddFromFolder(fBasePath + arr.Strings[i]) + else if arr.JSONType = jtObject then + tryAddFromFolder(arr.Objects[i].Strings['name']); + end; // by config conf := getCurrentCustomConfig; if conf.isAssigned then @@ -1434,7 +1439,12 @@ begin // subpackages if conf.findArray('subPackages', arr) then for i := 0 to arr.Count-1 do - tryAddFromFolder(fBasePath + arr.Strings[i]); + begin + if arr.JSONType = jtString then + tryAddFromFolder(fBasePath + arr.Strings[i]) + else if arr.JSONType = jtObject then + tryAddFromFolder(arr.Objects[i].Strings['name']); + end; // custom files in current config if conf.findArray('sourceFiles', arr) then for i := 0 to arr.Count-1 do