diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e53a51b0e47486f71e8749e08e6162a31f2cfcfa..29a6b53359cc609d3e3780ae60c6709333e57a62 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,21 @@
+2008-01-01  Paolo Carlini  <pcarlini@suse.de>
+
+	PR libstdc++/34095
+	* include/parallel/multiway_merge.h (multiway_merge_bubble,
+	parallel_multiway_merge): Together with ::operator new use
+	::operator delete.
+	* include/parallel/losertree.h (LoserTree<>::~LoserTree): Likewise.
+	* include/parallel/quicksort.h (parallel_sort_qs_divide): Likewise.
+	* include/parallel/random_shuffle.h (parallel_random_shuffle_drs_pu,
+	sequential_random_shuffle): Likewise.
+	* include/parallel/tree.h (_M_not_sorted_bulk_insertion_construction):
+	Likewise.
+	* include/parallel/multiway_mergesort.h (parallel_sort_mwms_pu,
+	parallel_sort_mwms): Likewise.
+	* include/parallel/partial_sum.h (parallel_partial_sum_linear):
+	Likewise. 
+	* testsuite/25_algorithms/sort/34095.cc: New.
+
 2008-01-01  Paolo Carlini  <pcarlini@suse.de>
 
 	* testsuite/25_algorithms/sort/34636.cc: Fix Copyright year.
diff --git a/libstdc++-v3/include/parallel/losertree.h b/libstdc++-v3/include/parallel/losertree.h
index 2f2fae711da08f0624ef4637b4c270ce4e38d371..786b8fb12fb4286cb688701644ce1bc9358e3324 100644
--- a/libstdc++-v3/include/parallel/losertree.h
+++ b/libstdc++-v3/include/parallel/losertree.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -250,7 +250,7 @@ template<typename T, typename Comparator = std::less<T> >
     }
 
     inline ~LoserTree()
-    { delete[] losers; }
+    { ::operator delete(losers); }
 
     inline int
     get_min_source()
diff --git a/libstdc++-v3/include/parallel/multiway_merge.h b/libstdc++-v3/include/parallel/multiway_merge.h
index 818049cde855f98faedb03d952571c8968e3cd9a..98f19c2478f544e33e2cc2f5c4927d71d9190a22 100644
--- a/libstdc++-v3/include/parallel/multiway_merge.h
+++ b/libstdc++-v3/include/parallel/multiway_merge.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -936,7 +936,7 @@ template<
           }
       }
 
-    delete fe;  //Destructors already called.
+    ::operator delete(fe);  //Destructors already called.
     delete[] source;
 
     return target;
@@ -1622,7 +1622,7 @@ template<
                         else
                         pieces[slab][seq].second = _GLIBCXX_PARALLEL_LENGTH(seqs_begin[seq]);
                       }
-                    delete[] samples;
+		  ::operator delete(samples);
                 }
               else
                 {
diff --git a/libstdc++-v3/include/parallel/multiway_mergesort.h b/libstdc++-v3/include/parallel/multiway_mergesort.h
index e54185069c9dcbea39b567b8a36dd684c3fe1f74..502cfab4557a6f09bd80aabcc4100537c875fb74 100644
--- a/libstdc++-v3/include/parallel/multiway_mergesort.h
+++ b/libstdc++-v3/include/parallel/multiway_mergesort.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -321,7 +321,7 @@ template<typename RandomAccessIterator, typename Comparator>
               sd->source + offset);
 #endif
 
-    delete[] sd->temporaries[iam];
+    ::operator delete(sd->temporaries[iam]);
   }
 
 /** @brief PMWMS main call.
@@ -415,7 +415,7 @@ template<typename RandomAccessIterator, typename Comparator>
     delete[] sd.merging_places;
 
     if (Settings::sort_splitting == Settings::SAMPLING)
-        delete[] sd.samples;
+      ::operator delete(sd.samples);
 
     delete[] sd.offsets;
     delete[] sd.pieces;
diff --git a/libstdc++-v3/include/parallel/partial_sum.h b/libstdc++-v3/include/parallel/partial_sum.h
index e4a4276f3a4d7dac645941ec37c410be325faa66..c165729d86a251775c880e2d0bd3b62d5187e356 100644
--- a/libstdc++-v3/include/parallel/partial_sum.h
+++ b/libstdc++-v3/include/parallel/partial_sum.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -182,7 +182,7 @@ template<
                       sums[iam]);
       } //parallel
 
-    delete[] sums;
+    ::operator delete(sums);
     delete[] borders;
 
     return result + n;
diff --git a/libstdc++-v3/include/parallel/quicksort.h b/libstdc++-v3/include/parallel/quicksort.h
index d94a49d5251d9560119e9ea80eaa4cfc1abaf027..9228647d5e02038454eb2c07674fe09024c2bf7d 100644
--- a/libstdc++-v3/include/parallel/quicksort.h
+++ b/libstdc++-v3/include/parallel/quicksort.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -91,7 +91,7 @@ namespace __gnu_parallel
         pred(comp, pivot);
     difference_type split = parallel_partition(begin, end, pred, num_threads);
 
-    delete[] samples;
+    ::operator delete(samples);
 
     return split;
   }
diff --git a/libstdc++-v3/include/parallel/random_shuffle.h b/libstdc++-v3/include/parallel/random_shuffle.h
index 663962b43f326c5824883c3e7678eb150a8ee5f7..dd086baf3ec0e08a4375ec68cf32bfbadeca54b2 100644
--- a/libstdc++-v3/include/parallel/random_shuffle.h
+++ b/libstdc++-v3/include/parallel/random_shuffle.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -237,7 +237,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator>
             ((b == d->bins_begin) ? 0 : sd->dist[b][d->num_threads]));
       }
 
-    delete[] sd->temporaries[iam];
+    ::operator delete(sd->temporaries[iam]);
   }
 
 /** @brief Round up to the next greater power of 2.
@@ -490,7 +490,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator>
         delete[] dist0;
         delete[] dist1;
         delete[] oracles;
-        delete[] target;
+        ::operator delete(target);
       }
     else
       __gnu_sequential::random_shuffle(begin, end, rng);
diff --git a/libstdc++-v3/include/parallel/tree.h b/libstdc++-v3/include/parallel/tree.h
index eae33c0cba25a5007d8fac4e0df60d2f1f2b5787..eed0b92931529e9558319bb2d46237d109aad38d 100644
--- a/libstdc++-v3/include/parallel/tree.h
+++ b/libstdc++-v3/include/parallel/tree.h
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2007 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008 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
@@ -1344,7 +1344,7 @@ namespace __gnu_parallel
 	_M_sorted_bulk_construction(sorted_access, beg_partition, n, num_threads, strictly_less_or_less_equal);
       else
 	_M_sorted_bulk_insertion(sorted_access, beg_partition, n, num_threads, strictly_less_or_less_equal);
-      delete v;
+      ::operator delete(v);
     }
 
     /** @brief Construct a tree sequentially using the parallel routine
diff --git a/libstdc++-v3/testsuite/25_algorithms/sort/34095.cc b/libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
new file mode 100644
index 0000000000000000000000000000000000000000..46e906b5bc56afad3b1d0b4e7d4c44f18e4c8221
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
@@ -0,0 +1,33 @@
+// Copyright (C) 2008 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <vector>
+#include <algorithm>
+
+// libstdc++/34095
+void test01()
+{
+  std::vector<std::vector<int> > v(20000);
+  std::sort(v.begin(), v.end()); 
+}
+
+int main()
+{
+  test01();
+  return 0;
+}