Allow passing the error value to wxStreamBase::Reset().
It can be useful to induce an error on the stream explicitly, e.g. because an incorrect value was read from it and we want to indicate it to the caller by setting stream error to wxSTREAM_READ_ERROR. Allow to do this by passing an optional error value to wxStreamBase::Reset(). Add an example of using the new functionality to the docview sample which needs it to be able to signal errors while reading the files. Also document this method that previously wasn't documented at all. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68331 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e3bb4c547a
commit
90693f47f2
@ -64,7 +64,7 @@ public:
|
||||
bool operator!() const { return !IsOk(); }
|
||||
|
||||
// reset the stream state
|
||||
void Reset() { m_lasterror = wxSTREAM_NO_ERROR; }
|
||||
void Reset(wxStreamError error = wxSTREAM_NO_ERROR) { m_lasterror = error; }
|
||||
|
||||
// this doesn't make sense for all streams, always test its return value
|
||||
virtual size_t GetSize() const;
|
||||
|
@ -80,6 +80,18 @@ public:
|
||||
*/
|
||||
virtual bool IsSeekable() const;
|
||||
|
||||
/**
|
||||
Resets the stream state.
|
||||
|
||||
By default, resets the stream to good state, i.e. clears any errors.
|
||||
Since wxWidgets 2.9.3 can be also used to explicitly set the state to
|
||||
the specified error (the @a error argument didn't exist in the previous
|
||||
versions).
|
||||
|
||||
@see GetLastError()
|
||||
*/
|
||||
void Reset(wxStreamError error = wxSTREAM_NO_ERROR);
|
||||
|
||||
/**
|
||||
Returns the opposite of IsOk().
|
||||
You can use this function to test the validity of the stream as if
|
||||
|
@ -79,6 +79,16 @@ DocumentIstream& DrawingDocument::LoadObject(DocumentIstream& istream)
|
||||
|
||||
wxInt32 count = 0;
|
||||
stream >> count;
|
||||
if ( count < 0 )
|
||||
{
|
||||
wxLogWarning("Drawing document corrupted: invalid segments count.");
|
||||
#if wxUSE_STD_IOSTREAM
|
||||
istream.clear(std::ios::badbit);
|
||||
#else
|
||||
istream.Reset(wxSTREAM_READ_ERROR);
|
||||
#endif
|
||||
return istream;
|
||||
}
|
||||
|
||||
for ( int n = 0; n < count; n++ )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user