summaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-12 23:58:58 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-12 23:58:58 +0000
commit1b97e2dced8356c83b2252957814c6c840c507c0 (patch)
tree602bc3610dffc41408a62687773210b530974bb6 /io.c
parentc926ac7e7355997f2590ae332c1857a856f31a5a (diff)
downloadruby-1b97e2dced8356c83b2252957814c6c840c507c0.tar.gz
ruby-1b97e2dced8356c83b2252957814c6c840c507c0.tar.xz
ruby-1b97e2dced8356c83b2252957814c6c840c507c0.zip
* io.c (rb_io_getc): use default external encoding if fptr->enc is
not set. [ruby-dev:32565] * lib/rubygems/package.rb (Gem::TarReader::Entry::rewind): typo fixed. [ruby-dev:32565] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/io.c b/io.c
index 5af2d493c..fdea5d272 100644
--- a/io.c
+++ b/io.c
@@ -2132,15 +2132,17 @@ rb_io_getc(VALUE io)
rb_io_t *fptr;
int r, n;
VALUE str;
+ rb_encoding *enc;
GetOpenFile(io, fptr);
rb_io_check_readable(fptr);
+ enc = fptr->enc ? fptr->enc : rb_default_external_encoding();
READ_CHECK(fptr);
if (io_fillbuf(fptr) < 0) {
return Qnil;
}
- r = rb_enc_precise_mbclen(fptr->rbuf+fptr->rbuf_off, fptr->rbuf+fptr->rbuf_off+fptr->rbuf_len, fptr->enc);
+ r = rb_enc_precise_mbclen(fptr->rbuf+fptr->rbuf_off, fptr->rbuf+fptr->rbuf_off+fptr->rbuf_len, enc);
if ((n = MBCLEN_CHARFOUND(r)) != 0 && n <= fptr->rbuf_len) {
str = rb_str_new(fptr->rbuf+fptr->rbuf_off, n);
fptr->rbuf_off += n;
@@ -2154,7 +2156,7 @@ getc_needmore:
rb_str_cat(str, fptr->rbuf+fptr->rbuf_off, 1);
fptr->rbuf_off++;
fptr->rbuf_len--;
- r = rb_enc_precise_mbclen(RSTRING_PTR(str), RSTRING_PTR(str)+RSTRING_LEN(str), fptr->enc);
+ r = rb_enc_precise_mbclen(RSTRING_PTR(str), RSTRING_PTR(str)+RSTRING_LEN(str), enc);
if (MBCLEN_NEEDMORE(r)) {
goto getc_needmore;
}