+ const wxFileOffset lenFile = stream.GetLength();
+ if ( lenFile == wxInvalidOffset )
+ {
+ m_i_streambuf = NULL;
+ m_lasterror = wxSTREAM_EOF;
+ return;
+ }
+
+ const size_t len = wx_truncate_cast(size_t, lenFile);
+ wxASSERT_MSG( len == lenFile + size_t(0), wxT("huge files not supported") );
+
+ 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;