Patchwork fix libstdc++/53678 - namespace pollution on NetBSD

login
register
mail settings
Submitter Jonathan Wakely
Date June 18, 2012, 9:44 p.m.
Message ID <CAH6eHdSwCmuj+ODPUvbG75v8oi2q_B2ixmrtHjx5bbjmWeHd8Q@mail.gmail.com>
Download mbox | patch
Permalink /patch/165614/
State New
Headers show

Comments

Jonathan Wakely - June 18, 2012, 9:44 p.m.
This fixes a regression on NetBSD.

2012-06-18  Jörg Sonnenberger <joerg@britannica.bec.de>
            Jonathan Wakely  <jwakely.gcc@gmail.com>

        PR libstdc++/53678
        * config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
        * testsuite/22_locale/ctype_base/53678.cc: New.

Tested x86_64-unknown-netbsd5.1, committed to trunk, 4.7 and 4.6 to follow
commit ec3a5e13dc6d1e3c1cf963baefbcf9fb89d15873
Author: Jonathan Wakely <jwakely.gcc@gmail.com>
Date:   Fri Jun 15 00:53:21 2012 +0100

    2012-06-18  Jörg Sonnenberger <joerg@britannica.bec.de>
    	    Jonathan Wakely  <jwakely.gcc@gmail.com>
    
    	PR libstdc++/53678
    	* config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
    	* testsuite/22_locale/ctype_base/53678.cc: New.

Patch

diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
index d75cb79..cd654d6 100644
--- a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
+++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
@@ -1,6 +1,6 @@ 
 // Locale support -*- C++ -*-
 
-// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2009, 2011, 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
@@ -31,8 +31,6 @@ 
 //   anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
 // See www.netbsd.org for details of access.
   
-#include <sys/param.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -47,7 +45,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
     // on the mask type. Because of this, we don't use an enum.
     typedef unsigned char      	mask;
 
-#if __NetBSD_Version__ < 599004100
+#ifndef _CTYPE_U
     static const mask upper    	= _U;
     static const mask lower 	= _L;
     static const mask alpha 	= _U | _L;
diff --git a/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc b/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
new file mode 100644
index 0000000..e4a9f07
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
@@ -0,0 +1,28 @@ 
+// 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/>.
+
+// { dg-do compile }
+
+// 22.2.1 The ctype category
+
+#include <locale>
+
+// libstdc++/53678
+void test01()
+{
+  bool NetBSD __attribute__((unused)) = true;
+}