Commit c2f0864f authored by Mark Olesen's avatar Mark Olesen
Browse files

ENH: remove size limit when reading verbatim strings (issue #785)

parent b854ce22
......@@ -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) 2017 OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
......@@ -471,8 +471,8 @@ Foam::Istream& Foam::ISstream::read(word& str)
<< buf << nl << endl;
}
// Finalize
str = buf;
// Finalize: content already validated, assign without additional checks.
str.assign(buf, nChar);
putback(c);
return *this;
......@@ -568,7 +568,7 @@ Foam::Istream& Foam::ISstream::read(string& str)
}
// don't worry about a dangling backslash if string terminated prematurely
// Don't worry about a dangling backslash if string terminated prematurely
buf[errLen] = buf[nChar] = '\0';
FatalIOErrorInFunction(*this)
......@@ -711,6 +711,7 @@ Foam::Istream& Foam::ISstream::readVerbatim(string& str)
unsigned nChar = 0;
char c;
str.clear();
while (get(c))
{
if (c == token::HASH)
......@@ -720,8 +721,7 @@ Foam::Istream& Foam::ISstream::readVerbatim(string& str)
if (nextC == token::END_BLOCK)
{
// The closing "#}" found
buf[nChar] = '\0';
str = buf;
str.append(buf, nChar);
return *this;
}
else
......@@ -733,19 +733,13 @@ Foam::Istream& Foam::ISstream::readVerbatim(string& str)
buf[nChar++] = c;
if (nChar == maxLen)
{
buf[errLen] = '\0';
FatalIOErrorInFunction(*this)
<< "string \"" << buf << "...\"\n"
<< " is too long (max. " << maxLen << " characters)"
<< exit(FatalIOError);
return *this;
str.append(buf, nChar);
nChar = 0;
}
}
// don't worry about a dangling backslash if string terminated prematurely
// Don't worry about a dangling backslash if string terminated prematurely
buf[errLen] = buf[nChar] = '\0';
FatalIOErrorInFunction(*this)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment