diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index a3e9af694bcfebd8424df3b57d3aaa6cfee78efc..cabb954e15ed551ff283060b0b46dfcaaae49a75 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2004-03-29  Paolo Carlini  <pcarlini@suse.de>
+
+	* testsuite/thread/pthread7-rope.cc: Fix, unpredictably, depending
+	on allocator behavior, the memory pointed by data2 may well be not
+	trashed.
+
 2004-03-28  Chavdar Botev  <cbotev@yahoo.com>
 
 	PR libstdc++/14245
diff --git a/libstdc++-v3/testsuite/thread/pthread7-rope.cc b/libstdc++-v3/testsuite/thread/pthread7-rope.cc
index 916a4550cdab740694988f8e2294336637e47483..f2183de77dbf15668770e0a73d06fb32349f4e7e 100644
--- a/libstdc++-v3/testsuite/thread/pthread7-rope.cc
+++ b/libstdc++-v3/testsuite/thread/pthread7-rope.cc
@@ -34,6 +34,7 @@
 const int max_thread_count = 4;
 const int max_loop_count = 10000;
 
+__gnu_cxx::crope foo2;
 __gnu_cxx::crope foo4;
 
 void* thread_main(void *) 
@@ -81,7 +82,6 @@ main()
 
   const char* data2;
   {
-    __gnu_cxx::crope foo2;
     foo2 += "bar2";
     foo2 += "baz2";
     foo2 += "bongle2";
@@ -108,7 +108,8 @@ main()
     }
 
   // Nothing says the data will be trashed at this point...
-  VERIFY( std::strcmp (data2, "bar2baz2bongle2") );
+  VERIFY( !std::strcmp (data, "barbazbongle") );
+  VERIFY( !std::strcmp (data2, "bar2baz2bongle2") );
 
   return 0;
 }