yann@687
|
1 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
yann@687
|
2 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2007-08-03 20:30:53.000000000 +0200
|
yann@687
|
3 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.cc 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
4 |
@@ -46,16 +46,13 @@
|
yann@687
|
5 |
__convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
|
yann@687
|
6 |
const __c_locale& __cloc)
|
yann@687
|
7 |
{
|
yann@687
|
8 |
- if (!(__err & ios_base::failbit))
|
yann@687
|
9 |
- {
|
yann@687
|
10 |
- char* __sanity;
|
yann@687
|
11 |
- errno = 0;
|
yann@687
|
12 |
- float __f = __strtof_l(__s, &__sanity, __cloc);
|
yann@687
|
13 |
- if (__sanity != __s && errno != ERANGE)
|
yann@687
|
14 |
- __v = __f;
|
yann@687
|
15 |
- else
|
yann@687
|
16 |
- __err |= ios_base::failbit;
|
yann@687
|
17 |
- }
|
yann@687
|
18 |
+ char* __sanity;
|
yann@687
|
19 |
+ errno = 0;
|
yann@687
|
20 |
+ float __f = __strtof_l(__s, &__sanity, __cloc);
|
yann@687
|
21 |
+ if (__sanity != __s && errno != ERANGE)
|
yann@687
|
22 |
+ __v = __f;
|
yann@687
|
23 |
+ else
|
yann@687
|
24 |
+ __err |= ios_base::failbit;
|
yann@687
|
25 |
}
|
yann@687
|
26 |
|
yann@687
|
27 |
template<>
|
yann@687
|
28 |
@@ -63,16 +60,13 @@
|
yann@687
|
29 |
__convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
|
yann@687
|
30 |
const __c_locale& __cloc)
|
yann@687
|
31 |
{
|
yann@687
|
32 |
- if (!(__err & ios_base::failbit))
|
yann@687
|
33 |
- {
|
yann@687
|
34 |
- char* __sanity;
|
yann@687
|
35 |
- errno = 0;
|
yann@687
|
36 |
- double __d = __strtod_l(__s, &__sanity, __cloc);
|
yann@687
|
37 |
- if (__sanity != __s && errno != ERANGE)
|
yann@687
|
38 |
- __v = __d;
|
yann@687
|
39 |
- else
|
yann@687
|
40 |
- __err |= ios_base::failbit;
|
yann@687
|
41 |
- }
|
yann@687
|
42 |
+ char* __sanity;
|
yann@687
|
43 |
+ errno = 0;
|
yann@687
|
44 |
+ double __d = __strtod_l(__s, &__sanity, __cloc);
|
yann@687
|
45 |
+ if (__sanity != __s && errno != ERANGE)
|
yann@687
|
46 |
+ __v = __d;
|
yann@687
|
47 |
+ else
|
yann@687
|
48 |
+ __err |= ios_base::failbit;
|
yann@687
|
49 |
}
|
yann@687
|
50 |
|
yann@687
|
51 |
template<>
|
yann@687
|
52 |
@@ -80,16 +74,13 @@
|
yann@687
|
53 |
__convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
|
yann@687
|
54 |
const __c_locale& __cloc)
|
yann@687
|
55 |
{
|
yann@687
|
56 |
- if (!(__err & ios_base::failbit))
|
yann@687
|
57 |
- {
|
yann@687
|
58 |
- char* __sanity;
|
yann@687
|
59 |
- errno = 0;
|
yann@687
|
60 |
- long double __ld = __strtold_l(__s, &__sanity, __cloc);
|
yann@687
|
61 |
- if (__sanity != __s && errno != ERANGE)
|
yann@687
|
62 |
- __v = __ld;
|
yann@687
|
63 |
- else
|
yann@687
|
64 |
- __err |= ios_base::failbit;
|
yann@687
|
65 |
- }
|
yann@687
|
66 |
+ char* __sanity;
|
yann@687
|
67 |
+ errno = 0;
|
yann@687
|
68 |
+ long double __ld = __strtold_l(__s, &__sanity, __cloc);
|
yann@687
|
69 |
+ if (__sanity != __s && errno != ERANGE)
|
yann@687
|
70 |
+ __v = __ld;
|
yann@687
|
71 |
+ else
|
yann@687
|
72 |
+ __err |= ios_base::failbit;
|
yann@687
|
73 |
}
|
yann@687
|
74 |
|
yann@687
|
75 |
void
|
yann@687
|
76 |
@@ -110,7 +101,7 @@
|
yann@687
|
77 |
void
|
yann@687
|
78 |
locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
|
yann@687
|
79 |
{
|
yann@687
|
80 |
- if (_S_get_c_locale() != __cloc)
|
yann@687
|
81 |
+ if (__cloc && _S_get_c_locale() != __cloc)
|
yann@687
|
82 |
__freelocale(__cloc);
|
yann@687
|
83 |
}
|
yann@687
|
84 |
|
yann@687
|
85 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.h
|
yann@687
|
86 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2007-08-03 20:30:53.000000000 +0200
|
yann@687
|
87 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.h 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
88 |
@@ -39,21 +39,23 @@
|
yann@687
|
89 |
#pragma GCC system_header
|
yann@687
|
90 |
|
yann@687
|
91 |
#include <cstring> // get std::strlen
|
yann@687
|
92 |
-#include <cstdio> // get std::snprintf or std::sprintf
|
yann@687
|
93 |
+#include <cstdio> // get std::vsnprintf or std::vsprintf
|
yann@687
|
94 |
#include <clocale>
|
yann@687
|
95 |
#include <langinfo.h> // For codecvt
|
yann@687
|
96 |
#ifdef __UCLIBC_MJN3_ONLY__
|
yann@687
|
97 |
#warning fix this
|
yann@687
|
98 |
#endif
|
yann@687
|
99 |
-#ifdef __UCLIBC_HAS_LOCALE__
|
yann@687
|
100 |
+#ifdef _GLIBCXX_USE_ICONV
|
yann@687
|
101 |
#include <iconv.h> // For codecvt using iconv, iconv_t
|
yann@687
|
102 |
#endif
|
yann@687
|
103 |
-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
|
yann@687
|
104 |
-#include <libintl.h> // For messages
|
yann@687
|
105 |
+#ifdef HAVE_LIBINTL_H
|
yann@687
|
106 |
+#include <libintl.h> // For messages
|
yann@687
|
107 |
#endif
|
yann@687
|
108 |
+#include <cstdarg>
|
yann@687
|
109 |
|
yann@687
|
110 |
#ifdef __UCLIBC_MJN3_ONLY__
|
yann@687
|
111 |
#warning what is _GLIBCXX_C_LOCALE_GNU for
|
yann@687
|
112 |
+// psm: used in os/gnu-linux/ctype_noninline.h
|
yann@687
|
113 |
#endif
|
yann@687
|
114 |
#define _GLIBCXX_C_LOCALE_GNU 1
|
yann@687
|
115 |
|
yann@687
|
116 |
@@ -62,7 +64,7 @@
|
yann@687
|
117 |
#endif
|
yann@687
|
118 |
// #define _GLIBCXX_NUM_CATEGORIES 6
|
yann@687
|
119 |
#define _GLIBCXX_NUM_CATEGORIES 0
|
yann@687
|
120 |
-
|
yann@687
|
121 |
+
|
yann@687
|
122 |
#ifdef __UCLIBC_HAS_XLOCALE__
|
yann@687
|
123 |
namespace __gnu_cxx
|
yann@687
|
124 |
{
|
yann@687
|
125 |
@@ -79,22 +81,24 @@
|
yann@687
|
126 |
typedef int* __c_locale;
|
yann@687
|
127 |
#endif
|
yann@687
|
128 |
|
yann@687
|
129 |
- // Convert numeric value of type _Tv to string and return length of
|
yann@687
|
130 |
- // string. If snprintf is available use it, otherwise fall back to
|
yann@687
|
131 |
- // the unsafe sprintf which, in general, can be dangerous and should
|
yann@687
|
132 |
+ // Convert numeric value of type double to string and return length of
|
yann@687
|
133 |
+ // string. If vsnprintf is available use it, otherwise fall back to
|
yann@687
|
134 |
+ // the unsafe vsprintf which, in general, can be dangerous and should
|
yann@687
|
135 |
// be avoided.
|
yann@687
|
136 |
- template<typename _Tv>
|
yann@687
|
137 |
- int
|
yann@687
|
138 |
- __convert_from_v(char* __out,
|
yann@687
|
139 |
- const int __size __attribute__ ((__unused__)),
|
yann@687
|
140 |
- const char* __fmt,
|
yann@687
|
141 |
-#ifdef __UCLIBC_HAS_XCLOCALE__
|
yann@687
|
142 |
- _Tv __v, const __c_locale& __cloc, int __prec)
|
yann@687
|
143 |
+ inline int
|
yann@687
|
144 |
+ __convert_from_v(const __c_locale&
|
yann@687
|
145 |
+#ifndef __UCLIBC_HAS_XCLOCALE__
|
yann@687
|
146 |
+ __cloc __attribute__ ((__unused__))
|
yann@687
|
147 |
+#endif
|
yann@687
|
148 |
+ ,
|
yann@687
|
149 |
+ char* __out,
|
yann@687
|
150 |
+ const int __size,
|
yann@687
|
151 |
+ const char* __fmt, ...)
|
yann@687
|
152 |
{
|
yann@687
|
153 |
+ va_list __args;
|
yann@687
|
154 |
+#ifdef __UCLIBC_HAS_XCLOCALE__
|
yann@687
|
155 |
__c_locale __old = __gnu_cxx::__uselocale(__cloc);
|
yann@687
|
156 |
#else
|
yann@687
|
157 |
- _Tv __v, const __c_locale&, int __prec)
|
yann@687
|
158 |
- {
|
yann@687
|
159 |
# ifdef __UCLIBC_HAS_LOCALE__
|
yann@687
|
160 |
char* __old = std::setlocale(LC_ALL, NULL);
|
yann@687
|
161 |
char* __sav = new char[std::strlen(__old) + 1];
|
yann@687
|
162 |
@@ -103,7 +107,9 @@
|
yann@687
|
163 |
# endif
|
yann@687
|
164 |
#endif
|
yann@687
|
165 |
|
yann@687
|
166 |
- const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
|
yann@687
|
167 |
+ va_start(__args, __fmt);
|
yann@687
|
168 |
+ const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
|
yann@687
|
169 |
+ va_end(__args);
|
yann@687
|
170 |
|
yann@687
|
171 |
#ifdef __UCLIBC_HAS_XCLOCALE__
|
yann@687
|
172 |
__gnu_cxx::__uselocale(__old);
|
yann@687
|
173 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
yann@687
|
174 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2007-08-03 20:30:53.000000000 +0200
|
yann@687
|
175 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
176 |
@@ -33,9 +33,14 @@
|
yann@687
|
177 |
|
yann@687
|
178 |
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
yann@687
|
179 |
|
yann@687
|
180 |
+#include <features.h>
|
yann@687
|
181 |
+#ifdef __UCLIBC_HAS_LOCALE__
|
yann@687
|
182 |
#define _LIBC
|
yann@687
|
183 |
#include <locale>
|
yann@687
|
184 |
#undef _LIBC
|
yann@687
|
185 |
+#else
|
yann@687
|
186 |
+#include <locale>
|
yann@687
|
187 |
+#endif
|
yann@687
|
188 |
#include <bits/c++locale_internal.h>
|
yann@687
|
189 |
|
yann@687
|
190 |
namespace std
|
yann@687
|
191 |
@@ -138,20 +143,34 @@
|
yann@687
|
192 |
ctype<wchar_t>::
|
yann@687
|
193 |
do_is(mask __m, wchar_t __c) const
|
yann@687
|
194 |
{
|
yann@687
|
195 |
- // Highest bitmask in ctype_base == 10, but extra in "C"
|
yann@687
|
196 |
- // library for blank.
|
yann@687
|
197 |
+ // The case of __m == ctype_base::space is particularly important,
|
yann@687
|
198 |
+ // due to its use in many istream functions. Therefore we deal with
|
yann@687
|
199 |
+ // it first, exploiting the knowledge that on GNU systems _M_bit[5]
|
yann@687
|
200 |
+ // is the mask corresponding to ctype_base::space. NB: an encoding
|
yann@687
|
201 |
+ // change would not affect correctness!
|
yann@687
|
202 |
bool __ret = false;
|
yann@687
|
203 |
- const size_t __bitmasksize = 11;
|
yann@687
|
204 |
- for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
|
yann@687
|
205 |
- if (__m & _M_bit[__bitcur]
|
yann@687
|
206 |
- && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
|
yann@687
|
207 |
- {
|
yann@687
|
208 |
- __ret = true;
|
yann@687
|
209 |
- break;
|
yann@687
|
210 |
- }
|
yann@687
|
211 |
+ if (__m == _M_bit[5])
|
yann@687
|
212 |
+ __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
|
yann@687
|
213 |
+ else
|
yann@687
|
214 |
+ {
|
yann@687
|
215 |
+ // Highest bitmask in ctype_base == 10, but extra in "C"
|
yann@687
|
216 |
+ // library for blank.
|
yann@687
|
217 |
+ const size_t __bitmasksize = 11;
|
yann@687
|
218 |
+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
|
yann@687
|
219 |
+ if (__m & _M_bit[__bitcur])
|
yann@687
|
220 |
+ {
|
yann@687
|
221 |
+ if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
|
yann@687
|
222 |
+ {
|
yann@687
|
223 |
+ __ret = true;
|
yann@687
|
224 |
+ break;
|
yann@687
|
225 |
+ }
|
yann@687
|
226 |
+ else if (__m == _M_bit[__bitcur])
|
yann@687
|
227 |
+ break;
|
yann@687
|
228 |
+ }
|
yann@687
|
229 |
+ }
|
yann@687
|
230 |
return __ret;
|
yann@687
|
231 |
}
|
yann@687
|
232 |
-
|
yann@687
|
233 |
+
|
yann@687
|
234 |
const wchar_t*
|
yann@687
|
235 |
ctype<wchar_t>::
|
yann@687
|
236 |
do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
|
yann@687
|
237 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.h
|
yann@687
|
238 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2007-08-03 20:30:53.000000000 +0200
|
yann@687
|
239 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.h 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
240 |
@@ -47,18 +47,21 @@
|
yann@687
|
241 |
template<typename _CharT>
|
yann@687
|
242 |
messages<_CharT>::messages(size_t __refs)
|
yann@687
|
243 |
: facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
|
yann@687
|
244 |
- _M_name_messages(_S_get_c_name())
|
yann@687
|
245 |
+ _M_name_messages(_S_get_c_name())
|
yann@687
|
246 |
{ }
|
yann@687
|
247 |
|
yann@687
|
248 |
template<typename _CharT>
|
yann@687
|
249 |
messages<_CharT>::messages(__c_locale __cloc, const char* __s,
|
yann@687
|
250 |
size_t __refs)
|
yann@687
|
251 |
- : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
|
yann@687
|
252 |
- _M_name_messages(__s)
|
yann@687
|
253 |
+ : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL)
|
yann@687
|
254 |
{
|
yann@687
|
255 |
- char* __tmp = new char[std::strlen(__s) + 1];
|
yann@687
|
256 |
- std::strcpy(__tmp, __s);
|
yann@687
|
257 |
+ const size_t __len = std::strlen(__s) + 1;
|
yann@687
|
258 |
+ char* __tmp = new char[__len];
|
yann@687
|
259 |
+ std::memcpy(__tmp, __s, __len);
|
yann@687
|
260 |
_M_name_messages = __tmp;
|
yann@687
|
261 |
+
|
yann@687
|
262 |
+ // Last to avoid leaking memory if new throws.
|
yann@687
|
263 |
+ _M_c_locale_messages = _S_clone_c_locale(__cloc);
|
yann@687
|
264 |
}
|
yann@687
|
265 |
|
yann@687
|
266 |
template<typename _CharT>
|
yann@687
|
267 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
yann@687
|
268 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2007-08-03 20:31:24.000000000 +0200
|
yann@687
|
269 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
270 |
@@ -33,9 +33,14 @@
|
yann@687
|
271 |
|
yann@687
|
272 |
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
yann@687
|
273 |
|
yann@687
|
274 |
+#include <features.h>
|
yann@687
|
275 |
+#ifdef __UCLIBC_HAS_LOCALE__
|
yann@687
|
276 |
#define _LIBC
|
yann@687
|
277 |
#include <locale>
|
yann@687
|
278 |
#undef _LIBC
|
yann@687
|
279 |
+#else
|
yann@687
|
280 |
+#include <locale>
|
yann@687
|
281 |
+#endif
|
yann@687
|
282 |
#include <bits/c++locale_internal.h>
|
yann@687
|
283 |
|
yann@687
|
284 |
#ifdef __UCLIBC_MJN3_ONLY__
|
yann@687
|
285 |
@@ -206,7 +211,7 @@
|
yann@687
|
286 |
}
|
yann@687
|
287 |
break;
|
yann@687
|
288 |
default:
|
yann@687
|
289 |
- ;
|
yann@687
|
290 |
+ __ret = pattern();
|
yann@687
|
291 |
}
|
yann@687
|
292 |
return __ret;
|
yann@687
|
293 |
}
|
yann@687
|
294 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
yann@687
|
295 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2007-08-03 20:31:24.000000000 +0200
|
yann@687
|
296 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
297 |
@@ -33,9 +33,14 @@
|
yann@687
|
298 |
|
yann@687
|
299 |
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
yann@687
|
300 |
|
yann@687
|
301 |
+#include <features.h>
|
yann@687
|
302 |
+#ifdef __UCLIBC_HAS_LOCALE__
|
yann@687
|
303 |
#define _LIBC
|
yann@687
|
304 |
#include <locale>
|
yann@687
|
305 |
#undef _LIBC
|
yann@687
|
306 |
+#else
|
yann@687
|
307 |
+#include <locale>
|
yann@687
|
308 |
+#endif
|
yann@687
|
309 |
#include <bits/c++locale_internal.h>
|
yann@687
|
310 |
|
yann@687
|
311 |
#ifdef __UCLIBC_MJN3_ONLY__
|
yann@687
|
312 |
diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/time_members.h
|
yann@687
|
313 |
--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/time_members.h 2007-08-03 20:30:21.000000000 +0200
|
yann@687
|
314 |
+++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/time_members.h 2007-08-03 20:31:54.000000000 +0200
|
yann@687
|
315 |
@@ -37,25 +37,33 @@
|
yann@687
|
316 |
template<typename _CharT>
|
yann@687
|
317 |
__timepunct<_CharT>::__timepunct(size_t __refs)
|
yann@687
|
318 |
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
|
yann@687
|
319 |
- _M_name_timepunct(_S_get_c_name())
|
yann@687
|
320 |
+ _M_name_timepunct(_S_get_c_name())
|
yann@687
|
321 |
{ _M_initialize_timepunct(); }
|
yann@687
|
322 |
|
yann@687
|
323 |
template<typename _CharT>
|
yann@687
|
324 |
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
|
yann@687
|
325 |
: facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
|
yann@687
|
326 |
- _M_name_timepunct(_S_get_c_name())
|
yann@687
|
327 |
+ _M_name_timepunct(_S_get_c_name())
|
yann@687
|
328 |
{ _M_initialize_timepunct(); }
|
yann@687
|
329 |
|
yann@687
|
330 |
template<typename _CharT>
|
yann@687
|
331 |
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
|
yann@687
|
332 |
size_t __refs)
|
yann@687
|
333 |
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
|
yann@687
|
334 |
- _M_name_timepunct(__s)
|
yann@687
|
335 |
+ _M_name_timepunct(NULL)
|
yann@687
|
336 |
{
|
yann@687
|
337 |
- char* __tmp = new char[std::strlen(__s) + 1];
|
yann@687
|
338 |
- std::strcpy(__tmp, __s);
|
yann@687
|
339 |
+ const size_t __len = std::strlen(__s) + 1;
|
yann@687
|
340 |
+ char* __tmp = new char[__len];
|
yann@687
|
341 |
+ std::memcpy(__tmp, __s, __len);
|
yann@687
|
342 |
_M_name_timepunct = __tmp;
|
yann@687
|
343 |
- _M_initialize_timepunct(__cloc);
|
yann@687
|
344 |
+
|
yann@687
|
345 |
+ try
|
yann@687
|
346 |
+ { _M_initialize_timepunct(__cloc); }
|
yann@687
|
347 |
+ catch(...)
|
yann@687
|
348 |
+ {
|
yann@687
|
349 |
+ delete [] _M_name_timepunct;
|
yann@687
|
350 |
+ __throw_exception_again;
|
yann@687
|
351 |
+ }
|
yann@687
|
352 |
}
|
yann@687
|
353 |
|
yann@687
|
354 |
template<typename _CharT>
|