On 21/09/17 07:46 +0200, François Dumont wrote:
Gentle reminder, ok to commit ?

No. Could you and Petr please come to an agreement about what is
actually wrong with the current implementation, and agree on a
solution?

Currently you're both just proposing patches that do different things,
without indicating why one patch is better than the other.

I understand that we want to remove the debugmode-dependent behaviour,
but I'd like to see any other changes justified by references to the
standard.

diff --git a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc 
b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
index b81f4d4..e3d99f9 100644
--- a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
@@ -25,9 +25,7 @@

void test02(void)
{
-
  typedef std::istreambuf_iterator<char> cistreambuf_iter;
-  typedef cistreambuf_iter::streambuf_type cstreambuf_type;
  const char slit01[] = "playa hermosa, liberia, guanacaste";
  std::string str01(slit01);
  std::istringstream istrs00(str01);
@@ -35,10 +33,17 @@ void test02(void)

  // ctor sanity checks
  cistreambuf_iter istrb_it01(istrs00);
-  cistreambuf_iter istrb_it02;
- std::string tmp(istrb_it01, istrb_it02); + cistreambuf_iter istrb_eos;
+  VERIFY( istrb_it01 != istrb_eos );
+
+  std::string tmp(istrb_it01, istrb_eos);
  VERIFY( tmp == str01 );

+  VERIFY( istrb_it01 != istrb_eos );

Why should this condition be true? The std::string constructor
increments the iterator until it reaches the end-of-stream value.

This is true with our current implementation, but that seems like a
bug, not something we want to verify in the testsuite.

+  cistreambuf_iter old = istrb_it01++;
+  VERIFY( old == istrb_eos );

This behaviour makes no sense.

+  VERIFY( istrb_it01 == istrb_eos );
+
  cistreambuf_iter istrb_it03(0);
  cistreambuf_iter istrb_it04;
  VERIFY( istrb_it03 == istrb_it04 );

Reply via email to