summaryrefslogtreecommitdiff
path: root/ext/iconv/iconv.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/iconv/iconv.c')
-rw-r--r--ext/iconv/iconv.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index 0ff7e0f7eb..cbb89dca48 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -209,7 +209,7 @@ iconv_try
size_t *outlen;
#endif /* HAVE_PROTOTYPES */
{
- if (iconv(cd, (char **)inptr, inlen, outptr, outlen) == (size_t)-1) {
+ if (iconv(cd, ICONV_INPTR_CAST inptr, inlen, outptr, outlen) == (size_t)-1) {
if (!*inlen)
return Qfalse;
switch (errno) {
@@ -401,6 +401,8 @@ iconv_convert
if (!ret)
ret = rb_str_derive(str, instart, inptr - instart);
+ else if (inptr > instart)
+ rb_str_cat(ret, instart, inptr - instart);
return ret;
}