diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 3df3b49183bb..f2820d92e665 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2008-12-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+	PR libstdc++/38411
+	* testsuite/22_locale/numpunct/members/char/2.cc: Use is_IS instead
+	of fr_FR.
+	* testsuite/22_locale/numpunct/members/wchar_t/2.cc: Likewise.
+	* testsuite/22_locale/locale/cons/7.cc: Likewise.
+
 2008-12-04  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	PR libstdc++/38368
diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
index ee812448ec96..62e6c24aa5b9 100644
--- a/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
+++ b/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
@@ -2,7 +2,8 @@
 
 // 2001-01-19 Benjamin Kosnik <bkoz@redhat.com>
 
-// Copyright (C) 2001, 2003, 2005 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+// Free Software Foundation
 //
 // 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
@@ -37,9 +38,9 @@ test02()
 
   // construct a locale object with the specialized facet.
   locale		loc_c = locale::classic();
-  locale		loc_fr = locale("fr_FR");
+  locale		loc_is = locale("is_IS");
   locale 		loc_1(locale::classic(), 
-			      new numpunct_byname<char>("fr_FR"));
+			      new numpunct_byname<char>("is_IS"));
 
   // check names
   VERIFY( loc_c.name() == name_c );
@@ -58,7 +59,7 @@ test02()
   const numpunct<char>&	nump_1 = use_facet<numpunct<char> >(loc_1); 
   const numpunct<char>&	nump_2 = use_facet<numpunct<char> >(loc_2); 
   const numpunct<char>&	nump_c = use_facet<numpunct<char> >(loc_c); 
-  const numpunct<char>&	nump_fr = use_facet<numpunct<char> >(loc_fr); 
+  const numpunct<char>&	nump_is = use_facet<numpunct<char> >(loc_is); 
 
   // sanity check the data is correct.
   char dp1 = nump_c.decimal_point();
@@ -79,11 +80,11 @@ test02()
   string t3 = nump_2.truename();
   string f3 = nump_2.falsename();
 
-  char dp4 = nump_fr.decimal_point();
-  char th4 = nump_fr.thousands_sep();
-  string g4 = nump_fr.grouping();
-  string t4 = nump_fr.truename();
-  string f4 = nump_fr.falsename();
+  char dp4 = nump_is.decimal_point();
+  char th4 = nump_is.thousands_sep();
+  string g4 = nump_is.grouping();
+  string t4 = nump_is.truename();
+  string f4 = nump_is.falsename();
   VERIFY( dp1 != dp2 );
   VERIFY( th1 != th2 );
 
diff --git a/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc b/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
index 590bc36a9c0c..b24579193c5f 100644
--- a/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
@@ -2,7 +2,8 @@
 
 // 2001-01-17 Benjamin Kosnik  <bkoz@redhat.com>
 
-// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+// Free Software Foundation
 //
 // 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
@@ -34,17 +35,17 @@ void test02()
   // basic construction
   locale loc_c = locale::classic();
   locale loc_us = locale("en_US");
-  locale loc_fr = locale("fr_FR");
+  locale loc_is = locale("is_IS");
   locale loc_de = locale("de_DE");
   VERIFY( loc_c != loc_de );
-  VERIFY( loc_us != loc_fr );
+  VERIFY( loc_us != loc_is );
   VERIFY( loc_us != loc_de );
-  VERIFY( loc_de != loc_fr );
+  VERIFY( loc_de != loc_is );
 
   // cache the numpunct facets
   const numpunct<char>& nump_c = use_facet<numpunct<char> >(loc_c); 
   const numpunct<char>& nump_us = use_facet<numpunct<char> >(loc_us); 
-  const numpunct<char>& nump_fr = use_facet<numpunct<char> >(loc_fr); 
+  const numpunct<char>& nump_is = use_facet<numpunct<char> >(loc_is); 
   const numpunct<char>& nump_de = use_facet<numpunct<char> >(loc_de); 
 
   // sanity check the data is correct.
@@ -58,11 +59,11 @@ void test02()
   string t2 = nump_us.truename();
   string f2 = nump_us.falsename();
 
-  char dp3 = nump_fr.decimal_point();
-  char th3 = nump_fr.thousands_sep();
-  string g3 = nump_fr.grouping();
-  string t3 = nump_fr.truename();
-  string f3 = nump_fr.falsename();
+  char dp3 = nump_is.decimal_point();
+  char th3 = nump_is.thousands_sep();
+  string g3 = nump_is.grouping();
+  string t3 = nump_is.truename();
+  string f3 = nump_is.falsename();
 
   char dp4 = nump_de.decimal_point();
   char th4 = nump_de.thousands_sep();
diff --git a/libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
index ea5d151da9a1..ec3ff7ea5085 100644
--- a/libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
@@ -34,17 +34,17 @@ void test02()
   // basic construction
   locale loc_c = locale::classic();
   locale loc_us = locale("en_US");
-  locale loc_fr = locale("fr_FR");
+  locale loc_is = locale("is_IS");
   locale loc_de = locale("de_DE");
   VERIFY( loc_c != loc_de );
-  VERIFY( loc_us != loc_fr );
+  VERIFY( loc_us != loc_is );
   VERIFY( loc_us != loc_de );
-  VERIFY( loc_de != loc_fr );
+  VERIFY( loc_de != loc_is );
 
   // cache the numpunct facets
   const numpunct<wchar_t>& nump_c = use_facet<numpunct<wchar_t> >(loc_c); 
   const numpunct<wchar_t>& nump_us = use_facet<numpunct<wchar_t> >(loc_us); 
-  const numpunct<wchar_t>& nump_fr = use_facet<numpunct<wchar_t> >(loc_fr); 
+  const numpunct<wchar_t>& nump_is = use_facet<numpunct<wchar_t> >(loc_is); 
   const numpunct<wchar_t>& nump_de = use_facet<numpunct<wchar_t> >(loc_de); 
 
   // sanity check the data is correct.
@@ -58,11 +58,11 @@ void test02()
   wstring t2 = nump_us.truename();
   wstring f2 = nump_us.falsename();
 
-  wchar_t dp3 = nump_fr.decimal_point();
-  wchar_t th3 = nump_fr.thousands_sep();
-  string g3 = nump_fr.grouping();
-  wstring t3 = nump_fr.truename();
-  wstring f3 = nump_fr.falsename();
+  wchar_t dp3 = nump_is.decimal_point();
+  wchar_t th3 = nump_is.thousands_sep();
+  string g3 = nump_is.grouping();
+  wstring t3 = nump_is.truename();
+  wstring f3 = nump_is.falsename();
 
   wchar_t dp4 = nump_de.decimal_point();
   wchar_t th4 = nump_de.thousands_sep();