diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2002-09-10 02:41:55 +0000 |
---|---|---|
committer | Danny Smith <dannysmith@gcc.gnu.org> | 2002-09-10 02:41:55 +0000 |
commit | 57c4e0cd3551e9d864e2c976478dacffeb2fe3d1 (patch) | |
tree | b37f380013d06c6a607a7198dd1cbd8f98eb8b65 | |
parent | 686f3bf03187ebf5dd69581f1defd4dc1d374be1 (diff) | |
download | gcc-57c4e0cd3551e9d864e2c976478dacffeb2fe3d1.zip gcc-57c4e0cd3551e9d864e2c976478dacffeb2fe3d1.tar.gz gcc-57c4e0cd3551e9d864e2c976478dacffeb2fe3d1.tar.bz2 |
locale_facets.tcc (__convert_from_v): Replace strdup with ISO malloc and strcpy.
* include/bits/locale_facets.tcc (__convert_from_v):
Replace strdup with ISO malloc and strcpy.
From-SVN: r56991
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 18 |
2 files changed, 17 insertions, 6 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 787792a..e89c618 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 63e52c0..ad7ba3f 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 |