aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2002-04-23 17:01:22 -0400
committerJason Merrill <jason@gcc.gnu.org>2002-04-23 17:01:22 -0400
commit74c263af801e048d886c552993038419372f8387 (patch)
treef8318c0af6054b83d63b498c0ea7f7db83a3220e
parent29cece2e5d5d62e657442a92094324cfba6466eb (diff)
downloadgcc-74c263af801e048d886c552993038419372f8387.zip
gcc-74c263af801e048d886c552993038419372f8387.tar.gz
gcc-74c263af801e048d886c552993038419372f8387.tar.bz2
re PR libstdc++/6414 (g++ 3.1 tellg() regression within last week)
PR libstdc++/6414 * include/bits/fstream.tcc (basic_filebuf::seekoff): Adjust return value properly in the trivial case. * testsuite/27_io/istream_seeks.cc (test04): Make sure that tellg() returns the right value after a read. From-SVN: r52679
-rw-r--r--libstdc++-v3/ChangeLog8
-rw-r--r--libstdc++-v3/include/bits/fstream.tcc2
-rw-r--r--libstdc++-v3/testsuite/27_io/istream_seeks.cc9
3 files changed, 17 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b69477b..c3667b9 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2002-04-23 Jason Merrill <jason@redhat.com>
+
+ PR libstdc++/6414
+ * include/bits/fstream.tcc (basic_filebuf::seekoff): Adjust return
+ value properly in the trivial case.
+ * testsuite/27_io/istream_seeks.cc (test04): Make sure that
+ tellg() returns the right value after a read.
+
2002-04-23 Hans-Peter Nilsson <hp@bitrange.com>
* config/cpu/mmix/bits/cpu_limits.h: New file.
diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc
index 235b4a8..c530f34 100644
--- a/libstdc++-v3/include/bits/fstream.tcc
+++ b/libstdc++-v3/include/bits/fstream.tcc
@@ -567,7 +567,7 @@ namespace std
else
{
__ret = _M_file.seekoff(__off, ios_base::cur, __mode);
- __ret += max(_M_out_cur, _M_in_cur) - _M_buf;
+ __ret += _M_in_cur - _M_filepos;
}
}
_M_last_overflowed = false;
diff --git a/libstdc++-v3/testsuite/27_io/istream_seeks.cc b/libstdc++-v3/testsuite/27_io/istream_seeks.cc
index dac5f3c..6574b0a 100644
--- a/libstdc++-v3/testsuite/27_io/istream_seeks.cc
+++ b/libstdc++-v3/testsuite/27_io/istream_seeks.cc
@@ -229,7 +229,14 @@ void test04(void)
VERIFY( pos05 == pos06 + off_type(10) );
VERIFY( state01 == state02 );
pos06 = is03.tellg();
- VERIFY( pos05 == pos06 );
+ VERIFY( pos05 == pos06 );
+
+ // libstdc++/6414
+ if01.seekg(0, std::ios_base::beg);
+ pos01 = if01.tellg();
+ if01.peek();
+ pos02 = if01.tellg();
+ VERIFY( pos02 == pos01 );
#ifdef DEBUG_ASSERT
assert(test);