merges r25127 from trunk into ruby_1_9_1.

--
* stringio/stringio.c (strio_read): set ASCII-8BIT encoding
  when length argument is given.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@25952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yugui 2009-11-27 02:55:41 +00:00
parent e6a97bf82d
commit f1d6d2da33
4 changed files with 13 additions and 5 deletions

View file

@ -1137,7 +1137,7 @@ strio_read(int argc, VALUE *argv, VALUE self)
{
struct StringIO *ptr = readable(StringIO(self));
VALUE str = Qnil;
long len, olen;
long len;
switch (argc) {
case 2:
@ -1146,7 +1146,7 @@ strio_read(int argc, VALUE *argv, VALUE self)
rb_str_modify(str);
case 1:
if (!NIL_P(argv[0])) {
len = olen = NUM2LONG(argv[0]);
len = NUM2LONG(argv[0]);
if (len < 0) {
rb_raise(rb_eArgError, "negative length %ld given", len);
}
@ -1158,7 +1158,6 @@ strio_read(int argc, VALUE *argv, VALUE self)
}
/* fall through */
case 0:
olen = -1;
len = RSTRING_LEN(ptr->string);
if (len <= ptr->pos) {
if (NIL_P(str)) {
@ -1178,6 +1177,7 @@ strio_read(int argc, VALUE *argv, VALUE self)
}
if (NIL_P(str)) {
str = strio_substr(ptr, ptr->pos, len);
if (argc > 0) rb_enc_associate(str, rb_ascii8bit_encoding());
}
else {
long rest = RSTRING_LEN(ptr->string) - ptr->pos;