fix minor problem in locale switching
authorJosh Coalson <jcoalson@users.sourceforce.net>
Tue, 13 Feb 2007 02:06:04 +0000 (02:06 +0000)
committerJosh Coalson <jcoalson@users.sourceforce.net>
Tue, 13 Feb 2007 02:06:04 +0000 (02:06 +0000)
src/share/grabbag/replaygain.c

index 8fedce7..b3d3d21 100644 (file)
@@ -98,7 +98,9 @@ static FLAC__bool append_tag_(FLAC__StreamMetadata *block, const char *format, c
         * We need to save the old locale and switch to "C" because the locale
         * influences the formatting of %f and we want it a certain way.
         */
-       saved_locale = setlocale(LC_ALL, 0);
+       saved_locale = strdup(setlocale(LC_ALL, 0));
+       if (0 == saved_locale)
+               return false;
        setlocale(LC_ALL, "C");
 #if defined _MSC_VER || defined __MINGW32__
        _snprintf(buffer, sizeof(buffer)-1, format, name, value);
@@ -106,6 +108,7 @@ static FLAC__bool append_tag_(FLAC__StreamMetadata *block, const char *format, c
        snprintf(buffer, sizeof(buffer)-1, format, name, value);
 #endif
        setlocale(LC_ALL, saved_locale);
+       free(saved_locale);
 
        entry.entry = (FLAC__byte *)buffer;
        entry.length = strlen(buffer);