From 87f30b70a623dc2c8b31d03c32299d6a46e3946e Mon Sep 17 00:00:00 2001 From: yugui Date: Fri, 12 Dec 2008 14:53:00 +0000 Subject: merges r20563 and r20588 from trunk into ruby_1_9_1. * pack.c (pack_pack): set US-ASCII and CODERANGE_7BIT when quoted-printable ('M') and base64 ('m'). [ruby-dev:37284] * pack.c (pack_unpack): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- pack.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'pack.c') diff --git a/pack.c b/pack.c index c4ee6dbb30..119a83b1ae 100644 --- a/pack.c +++ b/pack.c @@ -896,6 +896,8 @@ pack_pack(VALUE ary, VALUE fmt) case 'u': /* uuencoded string */ case 'm': /* base64 encoded string */ + enc = rb_enc_compatible(res, rb_enc_from_encoding(rb_usascii_encoding())); + rb_enc_associate(res, enc); from = NEXTFROM; StringValue(from); ptr = RSTRING_PTR(from); @@ -924,6 +926,8 @@ pack_pack(VALUE ary, VALUE fmt) break; case 'M': /* quoted-printable encoded string */ + enc = rb_enc_compatible(res, rb_enc_from_encoding(rb_usascii_encoding())); + rb_enc_associate(res, enc); from = rb_obj_as_string(NEXTFROM); if (len <= 1) len = 72; @@ -1886,6 +1890,7 @@ pack_unpack(VALUE str, VALUE fmt) } } rb_str_set_len(buf, ptr - RSTRING_PTR(buf)); + ENCODING_CODERANGE_SET(buf, rb_usascii_encindex(), ENC_CODERANGE_7BIT); UNPACK_PUSH(buf); } break; @@ -1914,6 +1919,7 @@ pack_unpack(VALUE str, VALUE fmt) s++; } rb_str_set_len(buf, ptr - RSTRING_PTR(buf)); + ENCODING_CODERANGE_SET(buf, rb_usascii_encindex(), ENC_CODERANGE_7BIT); UNPACK_PUSH(buf); } break; -- cgit v1.2.3