diff --git a/applications/utilities/preProcessing/changeDictionary/changeDictionary.C b/applications/utilities/preProcessing/changeDictionary/changeDictionary.C index 489e04eb2d036dd075fc617ffaf1f1229fd11b9c..11de1cedc15ae7debfbbbe9fd50ba98546244928 100644 --- a/applications/utilities/preProcessing/changeDictionary/changeDictionary.C +++ b/applications/utilities/preProcessing/changeDictionary/changeDictionary.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -628,29 +628,31 @@ int main(int argc, char *argv[]) wordList doneKeys(dictList.size()); label nEntries = fieldDict.size(); + nEntries = 0; forAll(dictList, i) { doneKeys[i] = dictList[i].keyword(); - dictList.set + + const entry* ePtr = fieldDict.findEntry ( - i, - fieldDict.lookupEntry - ( - doneKeys[i], - keyType::REGEX - ).clone() + doneKeys[i], + keyType::REGEX ); - fieldDict.remove(doneKeys[i]); + // Check that it hasn't been removed from fieldDict + if (ePtr) + { + dictList.set(nEntries++, ePtr->clone()); + fieldDict.remove(doneKeys[i]); + } } // Add remaining entries - label sz = dictList.size(); - dictList.setSize(nEntries); for (const entry& e : fieldDict) { - dictList.set(sz++, e.clone()); + dictList.set(nEntries++, e.clone()); } + dictList.setSize(nEntries); Info<< "Writing modified " << fieldName << endl; dictList.writeObject