X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Fconfig%2Flocale%2Fgnu%2Fmessages_members.cc;h=1a42b38983a14d524a684640981ca63378019d47;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=54a3c8fa9f647fdeb2ff0d0e341078ba2bde7b21;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libstdc++-v3/config/locale/gnu/messages_members.cc b/libstdc++-v3/config/locale/gnu/messages_members.cc index 54a3c8fa..1a42b389 100644 --- a/libstdc++-v3/config/locale/gnu/messages_members.cc +++ b/libstdc++-v3/config/locale/gnu/messages_members.cc @@ -1,11 +1,11 @@ // std::messages implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2005, 2009 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) +// 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, @@ -13,19 +13,14 @@ // 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . // // ISO C++ 14882: 22.2.7.1.2 messages virtual functions @@ -34,10 +29,10 @@ // Written by Benjamin Kosnik #include -#include "c++locale_internal.h" +#include + +_GLIBCXX_BEGIN_NAMESPACE(std) -namespace std -{ // Specializations. template<> string @@ -49,16 +44,19 @@ namespace std __uselocale(__old); return string(__msg); #else - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, _M_name_messages); const char* __msg = gettext(__dfault.c_str()); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; return string(__msg); #endif } -#ifdef _GLIBCPP_USE_WCHAR_T +#ifdef _GLIBCXX_USE_WCHAR_T template<> wstring messages::do_get(catalog, int, int, const wstring& __dfault) const @@ -69,13 +67,17 @@ namespace std __uselocale(__old); return _M_convert_from_char(__msg); # else - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, _M_name_messages); char* __msg = gettext(_M_convert_to_char(__dfault)); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; return _M_convert_from_char(__msg); # endif } #endif -} + +_GLIBCXX_END_NAMESPACE