summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2014-03-31 18:46:23 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2014-03-31 18:46:23 +0000
commit39706bc97269366073d2eb4cf3ecf7872513627d (patch)
tree96e975b37b34c43a58b8e1ab99672bfa8c0daf77 /libstdc++-v3
parentaeebd7a5d8e91d309070757e9732127e28527512 (diff)
downloadppe42-gcc-39706bc97269366073d2eb4cf3ecf7872513627d.tar.gz
ppe42-gcc-39706bc97269366073d2eb4cf3ecf7872513627d.zip
2014-03-31 Lars Gullik Bjønnes <larsbj@gullik.org>
Jonathan Wakely <jwakely@redhat.com> PR libstdc++/60270 * include/std/iomanip (_Quoted_string operator>>): Do not clear string if input is not quoted. * testsuite/27_io/manipulators/standard/char/60270.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208966 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog8
-rw-r--r--libstdc++-v3/include/std/iomanip3
-rw-r--r--libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc38
3 files changed, 47 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b1c0c60c638..1fe140ec8e2 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2014-03-31 Lars Gullik Bjønnes <larsbj@gullik.org>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/60270
+ * include/std/iomanip (_Quoted_string operator>>): Do not clear
+ string if input is not quoted.
+ * testsuite/27_io/manipulators/standard/char/60270.cc: New.
+
2014-03-31 Jonathan Wakely <jwakely@redhat.com>
* libsupc++/eh_ptr.cc: Improve static_assert messages.
diff --git a/libstdc++-v3/include/std/iomanip b/libstdc++-v3/include/std/iomanip
index b2c7b951bc2..73822db9b20 100644
--- a/libstdc++-v3/include/std/iomanip
+++ b/libstdc++-v3/include/std/iomanip
@@ -415,8 +415,6 @@ _GLIBCXX_END_NAMESPACE_VERSION
const _Quoted_string<basic_string<_CharT, _Traits, _Alloc>&,
_CharT>& __str)
{
- __str._M_string.clear();
-
_CharT __c;
__is >> __c;
if (!__is.good())
@@ -427,6 +425,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
__is >> __str._M_string;
return __is;
}
+ __str._M_string.clear();
std::ios_base::fmtflags __flags
= __is.flags(__is.flags() & ~std::ios_base::skipws);
do
diff --git a/libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc b/libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
new file mode 100644
index 00000000000..b2b213b52ae
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
@@ -0,0 +1,38 @@
+// { dg-do run }
+// { dg-options "-std=gnu++14" }
+
+// Copyright (C) 2014 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
+// <http://www.gnu.org/licenses/>.
+
+// 27.7.6 - Quoted manipulators [quoted.manip]
+
+// libstdc++/60270
+
+#include <string>
+#include <sstream>
+#include <iomanip>
+#include <testsuite_hooks.h>
+
+int main()
+{
+ std::istringstream in;
+ std::string s = "xxx";
+ in >> s;
+ VERIFY( !s.empty() );
+ in >> std::quoted(s);
+ VERIFY( !s.empty() );
+}
OpenPOWER on IntegriCloud