* ext/stringio/stringio.c (strio_write): should convert writing

string to the encoding of the buffer.

* hash.c (rb_any_hash): typo fixed.

* ext/zlib/zlib.c (rb_gzwriter_write): oops, IO string conversion
  need to be done by to_s.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2008-10-21 14:14:13 +00:00
Родитель c5377c2bcc
Коммит 16549e33da
5 изменённых файлов: 21 добавлений и 3 удалений

Просмотреть файл

@ -1,3 +1,13 @@
Tue Oct 21 23:12:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/stringio/stringio.c (strio_write): should convert writing
string to the encoding of the buffer.
* hash.c (rb_any_hash): typo fixed.
* ext/zlib/zlib.c (rb_gzwriter_write): oops, IO string conversion
need to be done by to_s.
Tue Oct 21 22:38:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (open_key_args): should adjust argc, argv in struct

Просмотреть файл

@ -13,6 +13,7 @@
#include "ruby.h"
#include "ruby/io.h"
#include "ruby/encoding.h"
#if defined(HAVE_FCNTL_H) || defined(_WIN32)
#include <fcntl.h>
#elif defined(HAVE_SYS_FCNTL_H)
@ -992,9 +993,15 @@ strio_write(VALUE self, VALUE str)
{
struct StringIO *ptr = writable(StringIO(self));
long len, olen;
rb_encoding *enc, *enc2;
if (TYPE(str) != T_STRING)
str = rb_obj_as_string(str);
enc = rb_enc_get(ptr->string);
enc2 = rb_enc_get(str);
if (enc != enc2 && enc != rb_ascii8bit_encoding()) {
str = rb_str_conv_enc(str, enc2, enc);
}
len = RSTRING_LEN(str);
if (len == 0) return INT2FIX(0);
check_modifiable(ptr);

Просмотреть файл

@ -2747,7 +2747,8 @@ rb_gzwriter_write(VALUE obj, VALUE str)
{
struct gzfile *gz = get_gzfile(obj);
StringValue(str);
if (TYPE(str) != T_STRING)
str = rb_obj_as_string(str);
if (gz->enc2 && gz->enc2 != rb_ascii8bit_encoding()) {
str = rb_str_conv_enc(str, rb_enc_get(str), gz->enc2);
}

2
hash.c
Просмотреть файл

@ -79,7 +79,7 @@ rb_any_hash(VALUE a)
default:
hval = rb_funcall(a, id_hash, 0);
if (!FIXNUM_P(hval)) {
hval = rb_funcall(hval, '%', 1, INT2FIX(5368709231));
hval = rb_funcall(hval, '%', 1, INT2FIX(536870923));
}
hnum = (int)FIX2LONG(hval);
}

Просмотреть файл

@ -597,7 +597,7 @@ if defined? Zlib
assert_equal("foo", Zlib::GzipReader.open(t.path) {|gz| gz.read })
o = Object.new
def o.to_str; "bar"; end
def o.to_s; "bar"; end
Zlib::GzipWriter.open(t.path) {|gz| gz.print(o) }
assert_equal("bar", Zlib::GzipReader.open(t.path) {|gz| gz.read })
end