From: Danny Smith Date: Tue, 10 Sep 2002 02:41:55 +0000 (+0000) Subject: locale_facets.tcc (__convert_from_v): Replace strdup with ISO malloc and strcpy. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=57c4e0cd3551e9d864e2c976478dacffeb2fe3d1;p=gcc.git 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 --- 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 + + * include/bits/locale_facets.tcc (__convert_from_v): + Replace strdup with ISO malloc and strcpy. + 2002-09-09 Benjamin Kosnik * 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(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(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