diff options
Diffstat (limited to 'src/libcrawler/SpoolRewindInputStream.cpp')
-rw-r--r-- | src/libcrawler/SpoolRewindInputStream.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/libcrawler/SpoolRewindInputStream.cpp b/src/libcrawler/SpoolRewindInputStream.cpp index 472a539..7108cc9 100644 --- a/src/libcrawler/SpoolRewindInputStream.cpp +++ b/src/libcrawler/SpoolRewindInputStream.cpp @@ -36,6 +36,9 @@ spool_streambuf::~spool_streambuf( ) streambuf::int_type spool_streambuf::spoolSourceData( char *data, size_t n ) { + m_base = &m_buf.front( ); + m_start = m_base; + size_t data_len = m_buf.size( ) - ( m_start - m_base ) ; // more space than data, no problem @@ -44,10 +47,10 @@ streambuf::int_type spool_streambuf::spoolSourceData( char *data, size_t n ) } // enough space in the stream read buffer, put it there - m_base = &m_buf.front( ); - m_start = m_base; + memcpy( m_start, data, data_len ); setg( m_base, m_start, m_start + data_len ); + data += data_len; n -= data_len; spoolData( data, n ); |