mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-27 22:03:57 +08:00
ostream.tcc (ostream::seekp): Add error checking as per DR 129.
2001-06-11 Benjamin Kosnik <bkoz@redhat.com> libstdc++/3114 * include/bits/ostream.tcc (ostream::seekp): Add error checking as per DR 129. * include/bits/istream.tcc (istream::seekg): Same. * testsuite/27_io/istream_seeks.cc: Fix. libstdc++/3113 * include/bits/stl_function.h (binder2nd): Fix as per DR 109. (binder1st): Same. * include/bits/std_queue.h: Add c++config.h. * testsuite/20_util/binders.cc: New test. From-SVN: r43201
This commit is contained in:
parent
353e51f8e5
commit
d52a984783
@ -1,3 +1,17 @@
|
||||
2001-06-11 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
libstdc++/3114
|
||||
* include/bits/ostream.tcc (ostream::seekp): Add error checking as
|
||||
per DR 129.
|
||||
* include/bits/istream.tcc (istream::seekg): Same.
|
||||
* testsuite/27_io/istream_seeks.cc: Fix.
|
||||
|
||||
libstdc++/3113
|
||||
* include/bits/stl_function.h (binder2nd): Fix as per DR 109.
|
||||
(binder1st): Same.
|
||||
* include/bits/std_queue.h: Add c++config.h.
|
||||
* testsuite/20_util/binders.cc: New test.
|
||||
|
||||
2001-06-11 Matthias Klose <doko@debian.org>
|
||||
Phil Edwards <pme@sources.redhat.com>
|
||||
|
||||
|
@ -959,7 +959,11 @@ namespace std
|
||||
{
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 136. seekp, seekg setting wrong streams?
|
||||
this->rdbuf()->pubseekpos(__pos, ios_base::in);
|
||||
pos_type __err = this->rdbuf()->pubseekpos(__pos, ios_base::in);
|
||||
|
||||
// 129. Need error indication from seekp() and seekg()
|
||||
if (__err == pos_type(off_type(-1)))
|
||||
this->setstate(failbit);
|
||||
#endif
|
||||
}
|
||||
catch(exception& __fail)
|
||||
@ -987,7 +991,12 @@ namespace std
|
||||
{
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 136. seekp, seekg setting wrong streams?
|
||||
this->rdbuf()->pubseekoff(__off, __dir, ios_base::in);
|
||||
pos_type __err = this->rdbuf()->pubseekoff(__off, __dir,
|
||||
ios_base::in);
|
||||
|
||||
// 129. Need error indication from seekp() and seekg()
|
||||
if (__err == pos_type(off_type(-1)))
|
||||
this->setstate(failbit);
|
||||
#endif
|
||||
}
|
||||
catch(exception& __fail)
|
||||
|
@ -411,10 +411,16 @@ namespace std
|
||||
bool __testok = this->fail() != true;
|
||||
|
||||
if (__testok)
|
||||
{
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 136. seekp, seekg setting wrong streams?
|
||||
this->rdbuf()->pubseekpos(__pos, ios_base::out);
|
||||
pos_type __err = this->rdbuf()->pubseekpos(__pos, ios_base::out);
|
||||
|
||||
// 129. Need error indication from seekp() and seekg()
|
||||
if (__err == pos_type(off_type(-1)))
|
||||
this->setstate(failbit);
|
||||
#endif
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -426,9 +432,16 @@ namespace std
|
||||
bool __testok = this->fail() != true;
|
||||
|
||||
if (__testok)
|
||||
{
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 136. seekp, seekg setting wrong streams?
|
||||
this->rdbuf()->pubseekoff(__off, __d, ios_base::out);
|
||||
pos_type __err = this->rdbuf()->pubseekoff(__off, __d,
|
||||
ios_base::out);
|
||||
|
||||
// 129. Need error indication from seekp() and seekg()
|
||||
if (__err == pos_type(off_type(-1)))
|
||||
this->setstate(failbit);
|
||||
}
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
|
@ -28,7 +28,7 @@
|
||||
#define _CPP_QUEUE 1
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <bits/c++config.h>
|
||||
#include <bits/stl_algobase.h>
|
||||
#include <bits/stl_alloc.h>
|
||||
#include <bits/stl_construct.h>
|
||||
|
@ -199,6 +199,13 @@ public:
|
||||
operator()(const typename _Operation::second_argument_type& __x) const {
|
||||
return op(value, __x);
|
||||
}
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 109. Missing binders for non-const sequence elements
|
||||
typename _Operation::result_type
|
||||
operator()(typename _Operation::second_argument_type& __x) const {
|
||||
return op(value, __x);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
template <class _Operation, class _Tp>
|
||||
@ -224,6 +231,13 @@ public:
|
||||
operator()(const typename _Operation::first_argument_type& __x) const {
|
||||
return op(__x, value);
|
||||
}
|
||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||
// 109. Missing binders for non-const sequence elements
|
||||
typename _Operation::result_type
|
||||
operator()(typename _Operation::first_argument_type& __x) const {
|
||||
return op(__x, value);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
template <class _Operation, class _Tp>
|
||||
|
51
libstdc++-v3/testsuite/20_util/binders.cc
Normal file
51
libstdc++-v3/testsuite/20_util/binders.cc
Normal file
@ -0,0 +1,51 @@
|
||||
// 2001-06-11 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
// Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// 20.3.6 Binders
|
||||
|
||||
#include <vector>
|
||||
#include <algorithm> // for_each
|
||||
#include <functional>
|
||||
|
||||
class Elem
|
||||
{
|
||||
public:
|
||||
void print(int i) const { }
|
||||
void modify(int i) { }
|
||||
};
|
||||
|
||||
// libstdc++/3113
|
||||
void test01()
|
||||
{
|
||||
std::vector<Elem> coll(2);
|
||||
// OK
|
||||
std::for_each(coll.begin(), coll.end(),
|
||||
std::bind2nd(std::mem_fun_ref(&Elem::print), 42));
|
||||
// OK
|
||||
std::for_each(coll.begin(), coll.end(),
|
||||
std::bind2nd(std::mem_fun_ref(&Elem::modify), 42));
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
@ -249,7 +249,7 @@ void test05(void)
|
||||
state02 = is03.rdstate();
|
||||
pos05 = is03.tellg();
|
||||
VERIFY( pos05 == pos06 ); // as only out buffer
|
||||
VERIFY( state01 == state02 );
|
||||
VERIFY( state01 != state02 );
|
||||
pos06 = is03.tellg();
|
||||
VERIFY( pos05 == pos06 );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user