Patchwork __gnu_cxx::rope: __uninitialized_fill_n_a error

login
register
mail settings
Submitter Jonathan Wakely
Date Sept. 30, 2012, 3:36 p.m.
Message ID <CAH6eHdRHnhf=uo4+kw2M63XQirU119HW=TJsDL02_GNmKVNZWg@mail.gmail.com>
Download mbox | patch
Permalink /patch/188170/
State New
Headers show

Comments

Jonathan Wakely - Sept. 30, 2012, 3:36 p.m.
This fixes a lookup failure when using ropes with an allocator
declared outside namespace std, introduced by
http://gcc.gnu.org/ml/libstdc++/2004-07/msg00157.html

        * include/ext/ropeimpl.h (__uninitialized_fill_n_a): Fix using
        declaration.
        * testsuite/ext/rope/5.cc: New.

Tested x86_64-linux, committed to trunk.
commit 293275915de97fc9a627d27a4b8d3143f398486e
Author: Jonathan Wakely <jwakely.gcc@gmail.com>
Date:   Sun Sep 30 15:53:11 2012 +0100

    	* include/ext/ropeimpl.h (__uninitialized_fill_n_a): Fix using
    	declaration.
    	* testsuite/ext/rope/5.cc: New.

Patch

diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h
index 3ee0610..5a68c18 100644
--- a/libstdc++-v3/include/ext/ropeimpl.h
+++ b/libstdc++-v3/include/ext/ropeimpl.h
@@ -58,7 +58,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
   using std::basic_ostream;
   using std::__throw_length_error;
   using std::_Destroy;
-  using std::uninitialized_fill_n;
+  using std::__uninitialized_fill_n_a;
 
   // Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
   // if necessary.  Assumes _M_path_end[leaf_index] and leaf_pos are correct.
diff --git a/libstdc++-v3/testsuite/ext/rope/5.cc b/libstdc++-v3/testsuite/ext/rope/5.cc
new file mode 100644
index 0000000..73e8294
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/rope/5.cc
@@ -0,0 +1,26 @@ 
+// Copyright (C) 2012 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/>.
+
+// rope (SGI extension)
+// http://gcc.gnu.org/ml/libstdc++/2012-09/msg00204.html
+
+// { dg-do compile }
+
+#include <ext/rope>
+#include <testsuite_allocator.h>
+
+__gnu_cxx::rope<char, __gnu_test::uneq_allocator<char> > r(10, 'a');