From af0b8d73e3ca3eb331cef85714085fedf1ce3712 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Mon, 14 Sep 2009 17:01:05 +0000 Subject: [PATCH] re PR libstdc++/41037 (dec not set in cerr flags) 2009-09-14 Paolo Carlini PR libstdc++/41037 * src/ios_init.cc (ios_base::Init::Init): Properly initialize cerr and wcerr flags. * testsuite/27_io/objects/char/41037.cc: New. * testsuite/27_io/objects/wchar_t/41037.cc: Likewise. From-SVN: r151692 --- libstdc++-v3/ChangeLog | 8 +++++ libstdc++-v3/src/ios_init.cc | 4 +-- .../testsuite/27_io/objects/char/41037.cc | 35 +++++++++++++++++++ .../testsuite/27_io/objects/wchar_t/41037.cc | 35 +++++++++++++++++++ 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 libstdc++-v3/testsuite/27_io/objects/char/41037.cc create mode 100644 libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 11695b7b4703..f47356699c11 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2009-09-14 Paolo Carlini + + PR libstdc++/41037 + * src/ios_init.cc (ios_base::Init::Init): Properly initialize cerr + and wcerr flags. + * testsuite/27_io/objects/char/41037.cc: New. + * testsuite/27_io/objects/wchar_t/41037.cc: Likewise. + 2009-09-14 Andrew Stubbs * config/cpu/sh/atomicity.h (__exchange_and_add): Set earlyclobber diff --git a/libstdc++-v3/src/ios_init.cc b/libstdc++-v3/src/ios_init.cc index 5c53bcae822a..1885d825971a 100644 --- a/libstdc++-v3/src/ios_init.cc +++ b/libstdc++-v3/src/ios_init.cc @@ -93,7 +93,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) new (&cerr) ostream(&buf_cerr_sync); new (&clog) ostream(&buf_cerr_sync); cin.tie(&cout); - cerr.flags(ios_base::unitbuf); + cerr.setf(ios_base::unitbuf); // _GLIBCXX_RESOLVE_LIB_DEFECTS // 455. cerr::tie() and wcerr::tie() are overspecified. cerr.tie(&cout); @@ -108,7 +108,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) new (&wcerr) wostream(&buf_wcerr_sync); new (&wclog) wostream(&buf_wcerr_sync); wcin.tie(&wcout); - wcerr.flags(ios_base::unitbuf); + wcerr.setf(ios_base::unitbuf); wcerr.tie(&wcout); #endif diff --git a/libstdc++-v3/testsuite/27_io/objects/char/41037.cc b/libstdc++-v3/testsuite/27_io/objects/char/41037.cc new file mode 100644 index 000000000000..a38221cab6e2 --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/objects/char/41037.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2009 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 3, 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 COPYING3. If not see +// . + +#include +#include + +// PR libstdc++/41037 +void test01() +{ + bool test __attribute__((unused)) = true; + + VERIFY( std::cerr.flags() & std::ios_base::dec ); + VERIFY( std::cerr.flags() & std::ios_base::skipws ); + VERIFY( std::cerr.flags() & std::ios_base::unitbuf ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc b/libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc new file mode 100644 index 000000000000..b3c01a0b7dca --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2009 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 3, 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 COPYING3. If not see +// . + +#include +#include + +// PR libstdc++/41037 +void test01() +{ + bool test __attribute__((unused)) = true; + + VERIFY( std::wcerr.flags() & std::ios_base::dec ); + VERIFY( std::wcerr.flags() & std::ios_base::skipws ); + VERIFY( std::wcerr.flags() & std::ios_base::unitbuf ); +} + +int main() +{ + test01(); + return 0; +}