diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 10 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_istream.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/std/std_ostream.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/istream_sentry.cc | 16 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/ostream_sentry.cc | 53 |
5 files changed, 80 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 716943f..ed3e31e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,15 @@ 2003-02-06 Paolo Carlini <pcarlini@unitus.it> + PR libstdc++/9562 + * include/std/std_istream.h + (basic_istream::sentry::operator bool()): Make const. + * include/std/std_ostream.h + (basic_ostream::sentry::operator bool()): Likewise. + * testsuite/27_io/istream_sentry.cc (test03): Add. + * testsuite/27_io/ostream_sentry.cc: Add. + +2003-02-06 Paolo Carlini <pcarlini@unitus.it> + PR libstdc++/9548 Implement resolution of DR 231 (Ready) * include/bits/locale_facets.h (__num_base::_S_format_float): diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/std_istream.h index 7e05032..aab3db3 100644 --- a/libstdc++-v3/include/std/std_istream.h +++ b/libstdc++-v3/include/std/std_istream.h @@ -620,7 +620,7 @@ namespace std * For ease of use, sentries may be converted to booleans. The * return value is that of the sentry state (true == okay). */ - operator bool() { return _M_ok; } + operator bool() const { return _M_ok; } private: bool _M_ok; diff --git a/libstdc++-v3/include/std/std_ostream.h b/libstdc++-v3/include/std/std_ostream.h index 9d1c1f6..9f7c386 100644 --- a/libstdc++-v3/include/std/std_ostream.h +++ b/libstdc++-v3/include/std/std_ostream.h @@ -394,7 +394,7 @@ namespace std * For ease of use, sentries may be converted to booleans. The * return value is that of the sentry state (true == okay). */ - operator bool() + operator bool() const { return _M_ok; } }; diff --git a/libstdc++-v3/testsuite/27_io/istream_sentry.cc b/libstdc++-v3/testsuite/27_io/istream_sentry.cc index 8ff446f..faf8cfe 100644 --- a/libstdc++-v3/testsuite/27_io/istream_sentry.cc +++ b/libstdc++-v3/testsuite/27_io/istream_sentry.cc @@ -65,7 +65,7 @@ test02() { using namespace std; istringstream in("80.21 56.89 12.3"); - bool test = true; + bool test = true; int i = 0; double x; @@ -79,9 +79,23 @@ test02() VERIFY( i == 3 ); } +// libstdc++/9562 +void +test03() +{ + bool test = true; + + std::stringbuf strbuf01; + std::istream strm1(&strbuf01); + const std::istream::sentry sentry1(strm1); + + VERIFY( bool(sentry1) == false ); +} + int main() { test01(); test02(); + test03(); return 0; } diff --git a/libstdc++-v3/testsuite/27_io/ostream_sentry.cc b/libstdc++-v3/testsuite/27_io/ostream_sentry.cc new file mode 100644 index 0000000..cba75f2 --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/ostream_sentry.cc @@ -0,0 +1,53 @@ +// 2003-02-06 Paolo Carlini <pcarlini@unitus.it> + +// Copyright (C) 2003 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. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// 27.6.2.3 class basic_ostream::sentry + +#include <ostream> +#include <sstream> +#include <testsuite_hooks.h> + +// libstdc++/9562 +void +test01() +{ + bool test = true; + + std::stringbuf strbuf01; + std::ostream strm1(&strbuf01); + const std::ostream::sentry sentry1(strm1); + + VERIFY( bool(sentry1) == true ); +} + +int main() +{ + test01(); + return 0; +} |