summaryrefslogtreecommitdiff
path: root/pack.c
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-30 14:36:18 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-30 14:36:18 +0000
commit14b8c2d598875f8d32844f0363422f14abd53459 (patch)
tree249068cccd4081da7eb757e3a0264da586cc1265 /pack.c
parent43a9c5a36470224bea23acb42339735efc27702b (diff)
merges r20057 from trunk into ruby_1_9_1.
* 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/branches/ruby_1_9_1@20065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'pack.c')
-rw-r--r--pack.c11
1 files changed, 9 insertions, 2 deletions
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] == '*')