# HG changeset patch # User jwe # Date 1083364710 0 # Node ID 658aad1c1b05731c987839b3f7568752e95eb14a # Parent 4a796c5fc7a3fb347c978c1f5a3029729ba87c16 [project @ 2004-04-30 22:38:30 by jwe] diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,6 +1,8 @@ 2004-04-30 John W. Eaton - * oct-stream.cc (octave_base_stream::clear): Also clear stream state. + * oct-stream.cc (octave_base_stream::clearerr): New function. + (octave_stream::clearerr): New function. + (seek (long, int)): Call clearerr here. * oct-stdstrm.h (octave_stdiostream::clear): New function. * c-file-ptr-stream.h (c_file_ptr_buf::clear, i_c_file_ptr_stream::clear, o_c_file_ptr_stream::clear, diff --git a/src/oct-stream.cc b/src/oct-stream.cc --- a/src/oct-stream.cc +++ b/src/oct-stream.cc @@ -935,6 +935,13 @@ void octave_base_stream::clear (void) { + fail = false; + errmsg = ""; +} + +void +octave_base_stream::clearerr (void) +{ std::istream *is = input_stream (); std::ostream *os = output_stream (); @@ -943,9 +950,6 @@ if (os) os->clear (); - - fail = false; - errmsg = ""; } // Functions that are defined for all input streams (input streams @@ -2706,7 +2710,11 @@ int retval = -1; if (stream_ok ("fseek")) - retval = rep->seek (offset, origin); + { + clearerr (); + + retval = rep->seek (offset, origin); + } return retval; } diff --git a/src/oct-stream.h b/src/oct-stream.h --- a/src/oct-stream.h +++ b/src/oct-stream.h @@ -398,6 +398,10 @@ void clear (void); + // Clear stream state. + + void clearerr (void); + private: // A reference count. @@ -572,6 +576,8 @@ std::ostream *output_stream (void) { return rep ? rep->output_stream () : 0; } + void clearerr (void) { if (rep) rep->clearerr (); } + private: // The actual representation of this stream.