diff --git a/src/OpenFOAM/db/IOobject/IOobject.C b/src/OpenFOAM/db/IOobject/IOobject.C
index 4f30c4bee9677045f1a6f58c46ee1935232e1c7f..f3062e9be05706324d1261e4722003273c22bc28 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();
     }