basic_string.h (string::compare): Adjust signatures as per DR 5.
2001-06-11 Benjamin Kosnik <bkoz@redhat.com> libstdc++/3126 * include/bits/basic_string.h (string::compare): Adjust signatures as per DR 5. * include/bits/basic_string.tcc: And here. libstdc++/2346 * config/c_io_stdio.h: Remove whitespace. * testsuite/27_io/istream_seeks.cc (test03): Add regression. (test02): Add regression. * testsuite/27_io/istream_seeks-3.tst: New file. From-SVN: r43240
This commit is contained in:
parent
9dffe3b49e
commit
3b0fd4bcdb
@ -1,3 +1,16 @@
|
||||
2001-06-11 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
libstdc++/3126
|
||||
* include/bits/basic_string.h (string::compare): Adjust signatures
|
||||
as per DR 5.
|
||||
* include/bits/basic_string.tcc: And here.
|
||||
|
||||
libstdc++/2346
|
||||
* config/c_io_stdio.h: Remove whitespace.
|
||||
* testsuite/27_io/istream_seeks.cc (test03): Add regression.
|
||||
(test02): Add regression.
|
||||
* testsuite/27_io/istream_seeks-3.tst: New file.
|
||||
|
||||
2001-06-11 Phil Edwards <pme@sources.redhat.com>
|
||||
|
||||
* README: Update to reflect reality.
|
||||
|
@ -92,13 +92,3 @@ namespace std
|
||||
}
|
||||
|
||||
#endif // _CPP_IO_STDIO_H
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -842,9 +842,15 @@ namespace std
|
||||
int
|
||||
compare(const _CharT* __s) const;
|
||||
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 5. String::compare specification questionable
|
||||
int
|
||||
compare(size_type __pos, size_type __n1, const _CharT* __s) const;
|
||||
|
||||
int
|
||||
compare(size_type __pos, size_type __n1, const _CharT* __s,
|
||||
size_type __n2 = npos) const;
|
||||
size_type __n2) const;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -809,6 +809,24 @@ namespace std
|
||||
}
|
||||
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
int
|
||||
basic_string <_CharT,_Traits,_Alloc>::
|
||||
compare(size_type __pos, size_type __n1, const _CharT* __s) const
|
||||
{
|
||||
size_type __size = this->size();
|
||||
if (__pos > __size)
|
||||
__throw_out_of_range("basic_string::compare");
|
||||
|
||||
size_type __osize = traits_type::length(__s);
|
||||
size_type __rsize = min(__size - __pos, __n1);
|
||||
size_type __len = min(__rsize, __osize);
|
||||
int __r = traits_type::compare(_M_data() + __pos, __s, __len);
|
||||
if (!__r)
|
||||
__r = __rsize - __osize;
|
||||
return __r;
|
||||
}
|
||||
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
int
|
||||
basic_string <_CharT,_Traits,_Alloc>::
|
||||
@ -839,7 +857,6 @@ namespace std
|
||||
_Traits::copy(__buf, __str.data(), __bytes);
|
||||
__buf[__bytes] = _CharT();
|
||||
}
|
||||
} // namespace std
|
||||
|
||||
} // std::
|
||||
|
||||
#endif /* _CPP_BITS_STRING_TCC */
|
||||
#endif
|
||||
|
10
libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
Normal file
10
libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
Normal file
@ -0,0 +1,10 @@
|
||||
0-0 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-1 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-2 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-3 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-4 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-5 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-6 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-7 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-8 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||
0-9 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
@ -1,6 +1,6 @@
|
||||
// 2000-06-29 bkoz
|
||||
|
||||
// Copyright (C) 2000 Free Software Foundation
|
||||
// Copyright (C) 2000, 2001 Free Software Foundation
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@ -28,7 +28,6 @@
|
||||
#include <fstream>
|
||||
#include <debug_assert.h>
|
||||
|
||||
|
||||
bool test01()
|
||||
{
|
||||
using namespace std;
|
||||
@ -64,6 +63,71 @@ bool test01()
|
||||
return test;
|
||||
}
|
||||
|
||||
const char* s = " lootpack, peanut butter wolf, rob swift, madlib, quasimoto";
|
||||
const int times = 10;
|
||||
|
||||
void write_rewind(std::iostream& stream)
|
||||
{
|
||||
for (int j = 0; j < times; j++)
|
||||
{
|
||||
bool test = true;
|
||||
std::streampos begin = stream.tellg();
|
||||
|
||||
for (int i = 0; i < times; ++i)
|
||||
stream << j << '-' << i << s << '\n';
|
||||
|
||||
stream.seekg(begin);
|
||||
std::streampos end = stream.tellg();
|
||||
std::streampos badpos = std::streampos(std::streambuf::off_type(-1));
|
||||
}
|
||||
}
|
||||
|
||||
void check_contents(std::iostream& stream)
|
||||
{
|
||||
bool test = true;
|
||||
|
||||
stream.clear();
|
||||
stream.seekg(0, std::ios::beg);
|
||||
int i = 0;
|
||||
int loop = times * times + 2;
|
||||
while (i < loop)
|
||||
{
|
||||
stream.ignore(80, '\n');
|
||||
if (stream.good())
|
||||
++i;
|
||||
else
|
||||
break;
|
||||
}
|
||||
VERIFY( i == times );
|
||||
}
|
||||
|
||||
// fstream
|
||||
// libstdc++/2346
|
||||
void test02()
|
||||
{
|
||||
std::fstream ofstrm;
|
||||
ofstrm.open("istream_seeks-3.txt", std::ios::out);
|
||||
if (!ofstrm)
|
||||
abort();
|
||||
write_rewind(ofstrm);
|
||||
ofstrm.close();
|
||||
|
||||
std::fstream ifstrm;
|
||||
ifstrm.open("istream_seeks-3.txt", std::ios::in);
|
||||
check_contents(ifstrm);
|
||||
ifstrm.close();
|
||||
}
|
||||
|
||||
// stringstream
|
||||
// libstdc++/2346
|
||||
void test03()
|
||||
{
|
||||
std::stringstream sstrm;
|
||||
|
||||
write_rewind(sstrm);
|
||||
check_contents(sstrm);
|
||||
}
|
||||
|
||||
// fstreams
|
||||
void test04(void)
|
||||
{
|
||||
@ -289,7 +353,13 @@ void test05(void)
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
|
||||
test02();
|
||||
test03();
|
||||
|
||||
test04();
|
||||
test05();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user