--- libjpeg-turbo/rdjpgcom.c +++ libjpeg-turbo/rdjpgcom.c @@ -227,10 +228,11 @@ process_COM (int raw) unsigned int length; int ch; int lastch = 0; + const char *prev_locale; /* Bill Allombert: set locale properly for isprint */ #ifdef HAVE_LOCALE_H - setlocale(LC_CTYPE, ""); + prev_locale = setlocale(LC_CTYPE, ""); #endif /* Get the marker parameter length count */ @@ -268,7 +270,8 @@ process_COM (int raw) /* Bill Allombert: revert to C locale */ #ifdef HAVE_LOCALE_H - setlocale(LC_CTYPE, "C"); + if (prev_locale) + setlocale(LC_CTYPE, "C"); #endif }