Skip to content

Commit

Permalink
Okay, apparently the newer standard specifies char** for the inbuf
Browse files Browse the repository at this point in the history
parameter to iconv()
(See http://lists.debian.org/debian-glibc/2004/05/msg00006.html)

I'm casting in the general case, but I added a non-const codepath in
case it matters on some platform.
  • Loading branch information
slouken committed Jun 28, 2007
1 parent b282d9d commit 38e0504
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/stdlib/SDL_iconv.c
Expand Up @@ -34,7 +34,20 @@ size_t SDL_iconv(SDL_iconv_t cd,
const char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft)
{
size_t retCode = iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft);
size_t retCode;
#ifdef ICONV_REALLY_MODIFIES_INBUF
if ( inbuf && *inbuf && inbytesleft ) {
char *tmp = SDL_stack_alloc(char, *inbytesleft);
char *ptr = tmp;
retCode = iconv(cd, &ptr, inbytesleft, outbuf, outbytesleft);
inbuf += (ptr - tmp);
SDL_stack_free(tmp);
} else {
retCode = iconv(cd, NULL, inbytesleft, outbuf, outbytesleft);
}
#else
retCode = iconv(cd, (char **)inbuf, inbytesleft, outbuf, outbytesleft);
#endif
if ( retCode == (size_t)-1 ) {
switch(errno) {
case E2BIG:
Expand Down

0 comments on commit 38e0504

Please sign in to comment.