- if (m_iolimit == 2) {
- m_eof = TRUE;
- return *this;
- }
- if (m_position_i+size > m_length)
- size = m_length-m_position_i;
-
- memcpy((void *)((unsigned long)buffer+m_position_i), m_buffer, size);
- m_position_i += size;
- m_lastread = size;
-
- return *this;
+ return m_i_streambuf->GetBufferStart()[m_i_streambuf->GetIntPosition()];
+}
+
+size_t wxMemoryInputStream::OnSysRead(void *buffer, size_t nbytes)
+{
+ size_t bufsize = m_i_streambuf->GetBufferEnd() - m_i_streambuf->GetBufferStart();
+ size_t oldpos = m_i_streambuf->GetIntPosition();
+ m_i_streambuf->Read(buffer, nbytes);
+ size_t newpos = m_i_streambuf->GetIntPosition();
+ if (newpos == 0) return bufsize - oldpos;
+ else return newpos - oldpos;