diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C index 7823f0e4c8..9ff7a33bbf 100644 --- a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C +++ b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C @@ -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)