From 65d2394bb975035ce8c063b5576e332441601af3 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 22 Jun 2020 14:22:18 +0200 Subject: [PATCH] BUG: windows IOobject::path() incorrect from absolute (fixes #1738) - only checked if it started with '/' and not 'd:/' (for example). --- src/OpenFOAM/db/IOobject/IOobject.C | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/OpenFOAM/db/IOobject/IOobject.C b/src/OpenFOAM/db/IOobject/IOobject.C index 4f30c4bee96..f3062e9be05 100644 --- a/src/OpenFOAM/db/IOobject/IOobject.C +++ b/src/OpenFOAM/db/IOobject/IOobject.C @@ -40,7 +40,7 @@ namespace Foam char Foam::IOobject::scopeSeparator ( #ifdef _WIN32 - // Windows: using ':' for scoping conflicts with d:/path etc + // Windows: using ':' causes scoping conflicts with d:/path etc Foam::debug::infoSwitch("scopeSeparator", '_') #else Foam::debug::infoSwitch("scopeSeparator", ':') @@ -467,10 +467,19 @@ const Foam::fileName& Foam::IOobject::caseName() const Foam::fileName Foam::IOobject::path() const { // A file is 'outside' of the case if it has been specified using an - // absolute path (starts with '/') + // absolute path - if (instance().starts_with('/')) + const auto first = instance().find('/'); + + if + ( + first == 0 + #ifdef _WIN32 + || (first == 2 && instance()[1] == ':') // Eg, d:/path + #endif + ) { + // Absolute path (starts with '/' or 'd:/') return instance(); } -- GitLab