diff options
author | dannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-10 02:41:55 +0000 |
---|---|---|
committer | dannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-10 02:41:55 +0000 |
commit | eae298a0dfceabeb93dd238b95d96e977946529f (patch) | |
tree | b37f380013d06c6a607a7198dd1cbd8f98eb8b65 /libstdc++-v3 | |
parent | d7b7c7549096c1c7b76ce2bfa3c4f148499e0404 (diff) | |
download | gcc-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/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 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 |