diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-07-30 01:31:43 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-07-30 01:31:43 +0000 |
commit | 5172e595c90357ff0d66dbda52e58baeaa394336 (patch) | |
tree | b231cc0f115ecf6ae0beed7b9cf21946934c6247 /ext/iconv/iconv.c | |
parent | 252df14e6befc846d6c7b3b444fc956267440f4d (diff) | |
download | ruby-5172e595c90357ff0d66dbda52e58baeaa394336.tar.gz |
* ext/iconv/iconv.c (iconv_convert): append unchanged portion
after overflow. [ruby-dev:21006]
* ext/iconv/extconf.rb: check if iconv() 2nd argument is const.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/iconv/iconv.c')
-rw-r--r-- | ext/iconv/iconv.c | 4 |
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; } |