aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/config/locale/gnu/c_locale.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/config/locale/gnu/c_locale.cc')
-rw-r--r--libstdc++-v3/config/locale/gnu/c_locale.cc23
1 files changed, 22 insertions, 1 deletions
diff --git a/libstdc++-v3/config/locale/gnu/c_locale.cc b/libstdc++-v3/config/locale/gnu/c_locale.cc
index 60ec54d76db..188f3a2f1c1 100644
--- a/libstdc++-v3/config/locale/gnu/c_locale.cc
+++ b/libstdc++-v3/config/locale/gnu/c_locale.cc
@@ -36,6 +36,7 @@
#include <locale>
#include <stdexcept>
#include <langinfo.h>
+#include "c++locale_internal.h"
namespace std
{
@@ -177,9 +178,29 @@ namespace std
void
locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
- { __freelocale(__cloc); }
+ {
+ if (_S_c_locale != __cloc)
+ __freelocale(__cloc);
+ }
__c_locale
locale::facet::_S_clone_c_locale(__c_locale& __cloc)
{ return __duplocale(__cloc); }
+
+ const char* locale::_S_categories[_S_categories_size
+ + _S_extra_categories_size] =
+ {
+ "LC_CTYPE",
+ "LC_NUMERIC",
+ "LC_COLLATE",
+ "LC_TIME",
+ "LC_MONETARY",
+ "LC_MESSAGES",
+ "LC_PAPER",
+ "LC_NAME",
+ "LC_ADDRESS",
+ "LC_TELEPHONE",
+ "LC_MEASUREMENT",
+ "LC_IDENTIFICATION"
+ };
} // namespace std