char *inptr, *outptr;
size_t inbytesleft;
size_t nconv;
+ size_t outsize;
if (!charset || !strcasecmp (encoding, charset)) {
memmove (outbuf, inbuf, strlen(inbuf)<outbytesleft?strlen(inbuf)+1:strlen(inbuf));
return outbuf;
}
+ outsize = outbytesleft;
+
cd = iconv_open (charset, encoding);
inbytesleft = strlen (inbuf)+1;
nconv = iconv (cd, &inptr, &inbytesleft, &outptr, &outbytesleft);
iconv_close(cd);
+ if (nconv == -1 && outsize-outbytesleft >= 0)
+ outbuf[outsize-outbytesleft] = '\0';
+
return outbuf;
}