From e06e40c4d0d816d92c947755bb739d9bdbc2b829 Mon Sep 17 00:00:00 2001 From: weidai Date: Thu, 8 Apr 2004 01:31:06 +0000 Subject: [PATCH] fix extraneous FinalizeLazyPut in NetworkSink::Put2 in case of exceptions --- trunk/c5/network.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/trunk/c5/network.cpp b/trunk/c5/network.cpp index ab495da9..53284a60 100644 --- a/trunk/c5/network.cpp +++ b/trunk/c5/network.cpp @@ -195,7 +195,7 @@ unsigned int NetworkSink::Put2(const byte *inString, unsigned int length, int me inString += m_skipBytes; length -= m_skipBytes; } - LazyPutter lp(m_buffer, inString, length); + m_buffer.LazyPut(inString, length); if (!blocking || m_buffer.CurrentSize() > m_autoFlushBound) TimedFlush(0, 0); @@ -209,10 +209,13 @@ unsigned int NetworkSink::Put2(const byte *inString, unsigned int length, int me assert(!blocking); unsigned int blockedBytes = STDMIN(m_buffer.CurrentSize() - targetSize, (unsigned long)length); m_buffer.UndoLazyPut(blockedBytes); + m_buffer.FinalizeLazyPut(); m_wasBlocked = true; m_skipBytes += length - blockedBytes; return STDMAX(blockedBytes, 1U); } + + m_buffer.FinalizeLazyPut(); m_wasBlocked = false; m_skipBytes = 0;