BUG: #include of empty filename creates confusing error message (Mark Olesen)
When using #include or #includeIfPresent, it is easy to generate an
empty file name. For example,
#include "~OpenFOAM/missing-path/file"
On error, findEtcFile() returns an empty fileName. This was treated as
a relative name, which meant there was an attempt to open the parent directory
as a file. The resulting error message was confusing:
--> FOAM FATAL IO ERROR:
Attempt to put back onto bad stream
file: /CASE/PATH/system at line 1.
From function void Istream::putBack(const token&)
in file db/IOstreams/IOstreams/Istream.C at line 34.
- fix by leaving empty expansions as-is
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -74,13 +74,15 @@ Foam::fileName Foam::functionEntries::includeEntry::includeFileName
|
||||
fileName fName(is);
|
||||
fName.expand();
|
||||
|
||||
// relative name
|
||||
if (!fName.isAbsolute())
|
||||
if (fName.empty() || fName.isAbsolute())
|
||||
{
|
||||
fName = fileName(is.name()).path()/fName;
|
||||
return fName;
|
||||
}
|
||||
else
|
||||
{
|
||||
// relative name
|
||||
return fileName(is.name()).path()/fName;
|
||||
}
|
||||
|
||||
return fName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user