summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authordannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-10 02:41:55 +0000
committerdannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4>2002-09-10 02:41:55 +0000
commiteae298a0dfceabeb93dd238b95d96e977946529f (patch)
treeb37f380013d06c6a607a7198dd1cbd8f98eb8b65 /libstdc++-v3
parentd7b7c7549096c1c7b76ce2bfa3c4f148499e0404 (diff)
downloadgcc-eae298a0dfceabeb93dd238b95d96e977946529f.tar.gz
* include/bits/locale_facets.tcc (__convert_from_v):
Replace strdup with ISO malloc and strcpy. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56991 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc18
2 files changed, 17 insertions, 6 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 787792ad612..e89c6187ae7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-10 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/bits/locale_facets.tcc (__convert_from_v):
+ Replace strdup with ISO malloc and strcpy.
+
2002-09-09 Benjamin Kosnik <bkoz@redhat.com>
* docs/html/configopts.html: Change grouping. Note ABI impacts.
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 63e52c00585..ad7ba3f5320 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -1976,14 +1976,17 @@ namespace std
_Tv __v, const __c_locale&, int __prec = -1)
{
int __ret;
- char* __old = strdup(setlocale(LC_ALL, NULL));
+ char* __old = setlocale(LC_ALL, NULL);
+ char* __sav = static_cast<char*>(malloc(strlen(__old) + 1));
+ if (__sav)
+ strcpy(__sav, __old);
setlocale(LC_ALL, "C");
if (__prec >= 0)
__ret = snprintf(__out, __size, __fmt, __prec, __v);
else
__ret = snprintf(__out, __size, __fmt, __v);
- setlocale(LC_ALL, __old);
- free(__old);
+ setlocale(LC_ALL, __sav);
+ free(__sav);
return __ret;
}
#else
@@ -1993,14 +1996,17 @@ namespace std
const __c_locale&, int __prec = -1)
{
int __ret;
- char* __old = strdup(setlocale(LC_ALL, NULL));
+ char* __old = setlocale(LC_ALL, NULL);
+ char* __sav = static_cast<char*>(malloc(strlen(__old) + 1));
+ if (__sav)
+ strcpy(__sav, __old);
setlocale(LC_ALL, "C");
if (__prec >= 0)
__ret = sprintf(__out, __fmt, __prec, __v);
else
__ret = sprintf(__out, __fmt, __v);
- setlocale(LC_ALL, __old);
- free(__old);
+ setlocale(LC_ALL, __sav);
+ free(__sav);
return __ret;
}
#endif