summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-30 09:19:13 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-30 09:19:13 +0000
commit93fa4cbf3d01c389c4f23408cacf05922583ed84 (patch)
treea59d4854cc7cd8889c02124fb424118ccaf143cb
parent86c50e39838fc5831163e3b92a9047d539fb46ee (diff)
* 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
-rw-r--r--ChangeLog6
-rw-r--r--pack.c11
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 <duerst@it.aoyama.ac.jp>
* 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 <matz@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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] == '*')