diff --git a/src/stdlib/SDL_iconv.c b/src/stdlib/SDL_iconv.c index 498969de1..fa8d9da0f 100644 --- a/src/stdlib/SDL_iconv.c +++ b/src/stdlib/SDL_iconv.c @@ -806,6 +806,16 @@ char *SDL_iconv_string(const char *tocode, const char *fromcode, const char *inb size_t retCode = 0; cd = SDL_iconv_open(tocode, fromcode); + if ( cd == (SDL_iconv_t)-1 ) { + /* See if we can recover here (fixes iconv on Solaris 11) */ + if ( !tocode || !*tocode ) { + tocode = "UTF-8"; + } + if ( !fromcode || !*fromcode ) { + tocode = "UTF-8"; + } + cd = SDL_iconv_open(tocode, fromcode); + } if ( cd == (SDL_iconv_t)-1 ) { return NULL; }