From 93fa4cbf3d01c389c4f23408cacf05922583ed84 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 30 Oct 2008 09:19:13 +0000 Subject: [PATCH] * pack.c (pack_pack): templates a, A, Z should propagate encoding of original strings. templates b, B, h, H brings ASCII-8BIT to the result. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ pack.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95313ae649..36b813d7e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,12 @@ Thu Oct 30 14:45:45 2008 Martin Duerst * enc/trans/iso-8859-1-tbl.rb: new file to avoid having to treat ISO-8859-1 as special +Thu Oct 30 14:10:46 2008 Yukihiro Matsumoto + + * pack.c (pack_pack): templates a, A, Z should propagate encoding + of original strings. templates b, B, h, H brings ASCII-8BIT to + the result. + Thu Oct 30 10:34:20 2008 Nobuyoshi Nakada * ruby.c (moreswitches): splits option string and passes arguments. diff --git a/pack.c b/pack.c index df25231610..2ecb2d68d6 100644 --- a/pack.c +++ b/pack.c @@ -519,8 +519,15 @@ pack_pack(VALUE ary, VALUE fmt) ptr = RSTRING_PTR(from); plen = RSTRING_LEN(from); OBJ_INFECT(res, from); - enc = rb_enc_compatible(res, from); - rb_enc_associate(res, enc); + switch (type) { + case 'a': case 'A': case 'Z': + enc = rb_enc_compatible(res, from); + rb_enc_associate(res, enc); + break; + default: + rb_enc_associate(res, rb_ascii8bit_encoding()); + break; + } } if (p[-1] == '*')