Mercurial > hg > octave-lyh
changeset 12966:18797a4b6174 stable
undo previous unintended change to oct-stream.cc
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 15 Aug 2011 11:30:23 -0400 |
parents | fb69561e5901 |
children | a4eb4d6bbd61 9f3ddb1ff2e3 |
files | src/oct-stream.cc |
diffstat | 1 files changed, 21 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/src/oct-stream.cc +++ b/src/oct-stream.cc @@ -3002,51 +3002,38 @@ { clearerr (); - // Find current position so we can return to it if needed. - long orig_pos = rep->tell (); - // Move to end of file. If successful, find the offset of the end. - - status = rep->seek (0, SEEK_END); + status = rep->seek (offset, origin); if (status == 0) { - long eof_pos = rep->tell (); - - // Attempt to move to desired position; may be outside bounds - // of existing file. - - status = rep->seek (offset, origin); - - if (status == 0) + long save_pos = rep->tell (); + + rep->seek (0, SEEK_END); + + long pos_eof = rep->tell (); + + // I don't think save_pos can be less than zero, but we'll + // check anyway... + + if (save_pos > pos_eof || save_pos < 0) { - // Where are we after moving to desired position? - - long desired_pos = rep->tell (); - - // I don't think desired_pos can be less than zero, but - // we'll check anyway... - - if (desired_pos > eof_pos || desired_pos < 0) - { - // Seek outside bounds of file. Failure should leave - // position unchanged. - - rep->seek (orig_pos, SEEK_SET); - - status = -1; - } - } - else - { - // Seeking to the desired position failed. Move back to - // original position and return failure status. + // Seek outside bounds of file. Failure should leave + // position unchanged. rep->seek (orig_pos, SEEK_SET); status = -1; } + else + { + // Is it possible for this to fail? We are just + // returning to a position after the first successful + // seek. + + rep->seek (save_pos, SEEK_SET); + } } }