diff -r 64e1fca51e8c -r f1290ca0fee6 src/jdk.jpackage/share/native/libapplauncher/JavaVirtualMachine.cpp --- a/src/jdk.jpackage/share/native/libapplauncher/JavaVirtualMachine.cpp Wed Jul 03 17:46:04 2019 -0400 +++ b/src/jdk.jpackage/share/native/libapplauncher/JavaVirtualMachine.cpp Sun Jul 07 19:40:48 2019 -0400 @@ -84,15 +84,30 @@ } void JavaOptions::AppendValues(OrderedMap Values) { - std::vector orderedKeys = Values.GetKeys(); + if (Values.GetAllowDuplicates()) { + for (int i = 0; i < (int)Values.Count(); i++) { + TString name, value; + + bool bResult = Values.GetKey(i, name); + bResult &= Values.GetValue(i, value); - for (std::vector::const_iterator iterator = orderedKeys.begin(); - iterator != orderedKeys.end(); iterator++) { - TString name = *iterator; - TString value; + if (bResult) { + AppendValue(name, value); + } + } + } else { // In case we asked to add values from OrderedMap with allow + // duplicates set to false. Not used now, but should avoid possible + // bugs. + std::vector orderedKeys = Values.GetKeys(); - if (Values.GetValue(name, value) == true) { - AppendValue(name, value); + for (std::vector::const_iterator iterator = orderedKeys.begin(); + iterator != orderedKeys.end(); iterator++) { + TString name = *iterator; + TString value; + + if (Values.GetValue(name, value) == true) { + AppendValue(name, value); + } } } }