This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch] Fix fill_n overload signature


Hi,

unless I'm missing something subtle, we have got a *very* long standing typo in the signature of a fill_n overload. Besides the missed optimization issue, due to libstdc++/25304 the problem also leads to compilation errors, per the attached testcase.

I will wait until tomorrow evening italian time, then I'd like to apply to 4_2-branch too.

Paolo.

//////////////
2007-01-13  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algobase.h (fill_n(char*, _Size,
	const signed char&)): Fix signature.
	* testsuite/25_algorithms/fill/3.cc: New.
Index: include/bits/stl_algobase.h
===================================================================
--- include/bits/stl_algobase.h	(revision 120748)
+++ include/bits/stl_algobase.h	(working copy)
@@ -675,7 +675,7 @@
 
   template<typename _Size>
     inline signed char*
-    fill_n(char* __first, _Size __n, const signed char& __c)
+    fill_n(signed char* __first, _Size __n, const signed char& __c)
     {
       std::fill(__first, __first + __n, __c);
       return __first + __n;
Index: testsuite/25_algorithms/fill/3.cc
===================================================================
--- testsuite/25_algorithms/fill/3.cc	(revision 0)
+++ testsuite/25_algorithms/fill/3.cc	(revision 0)
@@ -0,0 +1,42 @@
+// 2007-01-13  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 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.
+
+// 25.2.5 [lib.alg.fill] Fill
+
+#include <algorithm>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+
+  char ca[1] = { '\0' };
+  signed char sc = 1;
+
+  std::fill_n(ca, 1, sc);
+  VERIFY( ca[0] == 1 );
+}
+
+int
+main()
+{
+  test01();
+  return 0;
+}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]