From 603849383dedef5b6cfed25a9fe94cc5cb400cec Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 24 Sep 2019 07:36:49 +0200 Subject: [PATCH] BUG: incorrect dictionary name for subOrEmptyDict (fixes #1442) --- src/OpenFOAM/db/dictionary/dictionary.C | 12 ++++++++---- src/OpenFOAM/db/dictionary/dictionaryIO.C | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/OpenFOAM/db/dictionary/dictionary.C b/src/OpenFOAM/db/dictionary/dictionary.C index cb734280a2..fbba0da0c6 100644 --- a/src/OpenFOAM/db/dictionary/dictionary.C +++ b/src/OpenFOAM/db/dictionary/dictionary.C @@ -131,7 +131,7 @@ Foam::dictionary::dictionary parent_(parentDict) { transfer(dict); - name() = parentDict.name() + '.' + name(); + name() = fileName::concat(parentDict.name(), name(), '.'); } @@ -563,7 +563,8 @@ Foam::dictionary Foam::dictionary::subOrEmptyDict << name() << endl; } - return dictionary(*this, dictionary(name() + '.' + keyword)); + // The move constructor properly qualifies the dictionary name + return dictionary(*this, dictionary(fileName(keyword))); } @@ -659,7 +660,8 @@ Foam::entry* Foam::dictionary::add(entry* entryPtr, bool mergeEntry) if (hashedEntries_.insert(entryPtr->keyword(), entryPtr)) { - entryPtr->name() = name() + '.' + entryPtr->keyword(); + entryPtr->name() = + fileName::concat(name(), entryPtr->keyword(), '.'); if (entryPtr->keyword().isPattern()) { @@ -684,7 +686,9 @@ Foam::entry* Foam::dictionary::add(entry* entryPtr, bool mergeEntry) if (hashedEntries_.insert(entryPtr->keyword(), entryPtr)) { - entryPtr->name() = name() + '.' + entryPtr->keyword(); + entryPtr->name() = + fileName::concat(name(), entryPtr->keyword(), '.'); + parent_type::append(entryPtr); if (entryPtr->keyword().isPattern()) diff --git a/src/OpenFOAM/db/dictionary/dictionaryIO.C b/src/OpenFOAM/db/dictionary/dictionaryIO.C index b4838f9591..7366959d39 100644 --- a/src/OpenFOAM/db/dictionary/dictionaryIO.C +++ b/src/OpenFOAM/db/dictionary/dictionaryIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -39,7 +39,7 @@ Foam::dictionary::dictionary bool keepHeader ) : - name_(parentDict.name() + '.' + name), + name_(fileName::concat(parentDict.name(), name, '.')), parent_(parentDict) { read(is, keepHeader);