+ ssize_t len = (ssize_t)stream.GetLength();
+ if (len == wxInvalidOffset) {
+ m_i_streambuf = NULL;
+ m_lasterror = wxSTREAM_EOF;
+ return;
+ }
+ m_i_streambuf = new wxStreamBuffer(wxStreamBuffer::read);
+ m_i_streambuf->SetBufferIO(len); // create buffer
+ stream.CopyTo(m_i_streambuf->GetBufferStart(), len);
+ m_i_streambuf->SetIntPosition(0); // seek to start pos
+ m_i_streambuf->Fixed(true);
+ m_length = len;