mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: remove size limit when reading verbatim strings (issue #785)
This commit is contained in:
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user