diff --git a/src/linux.cc b/src/linux.cc index 2174fa67..09ad75e7 100644 --- a/src/linux.cc +++ b/src/linux.cc @@ -1069,7 +1069,7 @@ int fscanf_no_i18n(FILE *stream, const char *format, ...) { va_list ap; #ifdef BUILD_I18N - const char *oldlocale = setlocale(LC_NUMERIC, nullptr); + char *oldlocale = strdup(setlocale(LC_NUMERIC, nullptr)); setlocale(LC_NUMERIC, "C"); #endif @@ -1078,6 +1078,7 @@ int fscanf_no_i18n(FILE *stream, const char *format, ...) { va_end(ap); #ifdef BUILD_I18N setlocale(LC_NUMERIC, oldlocale); + free(oldlocale); #endif return returncode; }