mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-01-03 18:15:39 +00:00
Always allocate zt in output of SDL_iconv_string()
Before this, the function could not be used on buffers, as it would not account for the zero-termination unless it was included in the input. (cherry picked from commit 5f5abb680523e1adedd3fca2a8e252db01fc1c52)
This commit is contained in:
parent
7c86d96e86
commit
2660da6f5c
|
@ -688,7 +688,7 @@ extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
|
|||
size_t * outbytesleft);
|
||||
|
||||
/**
|
||||
* This function converts a string between encodings in one pass, returning a
|
||||
* This function converts a buffer or string between encodings in one pass, returning a
|
||||
* string that must be freed with SDL_free() or NULL on error.
|
||||
*
|
||||
* \since This function is available since SDL 2.0.0.
|
||||
|
|
|
@ -811,7 +811,7 @@ char *SDL_iconv_string(const char *tocode, const char *fromcode, const char *inb
|
|||
}
|
||||
|
||||
stringsize = inbytesleft > 4 ? inbytesleft : 4;
|
||||
string = (char *)SDL_malloc(stringsize);
|
||||
string = (char *)SDL_malloc(stringsize + 1);
|
||||
if (string == NULL) {
|
||||
SDL_iconv_close(cd);
|
||||
return NULL;
|
||||
|
@ -828,7 +828,7 @@ char *SDL_iconv_string(const char *tocode, const char *fromcode, const char *inb
|
|||
{
|
||||
char *oldstring = string;
|
||||
stringsize *= 2;
|
||||
string = (char *)SDL_realloc(string, stringsize);
|
||||
string = (char *)SDL_realloc(string, stringsize + 1);
|
||||
if (string == NULL) {
|
||||
SDL_free(oldstring);
|
||||
SDL_iconv_close(cd);
|
||||
|
@ -855,6 +855,7 @@ char *SDL_iconv_string(const char *tocode, const char *fromcode, const char *inb
|
|||
break;
|
||||
}
|
||||
}
|
||||
*outbuf = '\0';
|
||||
SDL_iconv_close(cd);
|
||||
|
||||
return string;
|
||||
|
|
Loading…
Reference in a new issue