This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[Patch] Fix fill_n overload signature
- From: Paolo Carlini <pcarlini at suse dot de>
- To: libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Sat, 13 Jan 2007 20:29:13 +0100
- Subject: [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;
+}