# HG changeset patch # User Sebastien Jodogne # Date 1537434458 -7200 # Node ID ab0fd5923c1db69563a575210a8d85364dfb38da # Parent 61fdb06e389a3faf70234ce6cf69ec1cfee949d1 fix diff -r 61fdb06e389a -r ab0fd5923c1d Core/DicomParsing/FromDcmtkBridge.cpp --- a/Core/DicomParsing/FromDcmtkBridge.cpp Thu Sep 20 10:30:49 2018 +0200 +++ b/Core/DicomParsing/FromDcmtkBridge.cpp Thu Sep 20 11:07:38 2018 +0200 @@ -1714,10 +1714,28 @@ { std::auto_ptr item(new DcmItem); - Json::Value::Members members = value[i].getMemberNames(); - for (Json::Value::ArrayIndex j = 0; j < members.size(); j++) + switch (value[i].type()) { - item->insert(FromJson(ParseTag(members[j]), value[i][members[j]], decodeDataUriScheme, dicomEncoding)); + case Json::objectValue: + { + Json::Value::Members members = value[i].getMemberNames(); + for (Json::Value::ArrayIndex j = 0; j < members.size(); j++) + { + item->insert(FromJson(ParseTag(members[j]), value[i][members[j]], decodeDataUriScheme, dicomEncoding)); + } + } + + case Json::arrayValue: + // Lua cannot disambiguate between an empty dictionary + // and an empty array + if (value[i].size() != 0) + { + throw OrthancException(ErrorCode_BadParameterType); + } + break; + + default: + throw OrthancException(ErrorCode_BadParameterType); } sequence->append(item.release());