Merge pull request #1931 from villytiger/streambuf

Fix writing into closed socket from streambuf
This commit is contained in:
Günter Obiltschnig 2017-11-12 20:54:36 +01:00 committed by GitHub
commit 088b18f151
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 4 deletions

View File

@ -73,12 +73,12 @@ public:
{
if (!(_mode & IOS::out)) return char_traits::eof();
if (flushBuffer() == std::streamsize(-1)) return char_traits::eof();
if (c != char_traits::eof())
{
*this->pptr() = char_traits::to_char_type(c);
this->pbump(1);
}
if (flushBuffer() == std::streamsize(-1)) return char_traits::eof();
return c;
}
@ -127,7 +127,7 @@ protected:
void resetBuffers()
{
this->setg(_pReadBuffer + 4, _pReadBuffer + 4, _pReadBuffer + 4);
this->setp(_pWriteBuffer, _pWriteBuffer + (_bufsize - 1));
this->setp(_pWriteBuffer, _pWriteBuffer + _bufsize);
}
private:

View File

@ -60,7 +60,7 @@ public:
_mode(mode)
{
this->setg(_pBuffer + 4, _pBuffer + 4, _pBuffer + 4);
this->setp(_pBuffer, _pBuffer + (_bufsize - 1));
this->setp(_pBuffer, _pBuffer + _bufsize);
}
~BasicBufferedStreamBuf()
@ -78,12 +78,12 @@ public:
{
if (!(_mode & IOS::out)) return char_traits::eof();
if (flushBuffer() == std::streamsize(-1)) return char_traits::eof();
if (c != char_traits::eof())
{
*this->pptr() = char_traits::to_char_type(c);
this->pbump(1);
}
if (flushBuffer() == std::streamsize(-1)) return char_traits::eof();
return c;
}