summaryrefslogtreecommitdiff
path: root/encoding.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-15 14:40:00 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-15 14:40:00 +0000
commitb121e47b4478ea410274e2611472f7c594016508 (patch)
tree7c8f145c9850a5b62239f32bf07ca92a01de303d /encoding.c
parente0f064cf3c4f5b59d438e96b5fb002a984b78329 (diff)
* string.c (rb_str_squeeze_bang): specialized for 7bit characters in
ASCII compatible strings. * string.c (rb_str_count): ditto. * string.c (tr_trans): preserve 7bit/valid coderange flag. * string.c (rb_str_squeeze_bang): preserve previous coderange value. * string.c (rb_str_lstrip_bang): ditto. * string.c (rb_str_rstrip_bang): ditto. * encoding.c (rb_default_external_encoding): preserve default_external_encoding in a static variable. * string.c (single_byte_optimizable): check coderange first, to reduce number of calling rb_enc_from_index(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/encoding.c b/encoding.c
index 288395b1dd..40afc0986b 100644
--- a/encoding.c
+++ b/encoding.c
@@ -997,11 +997,15 @@ rb_filesystem_encoding(void)
}
static int default_external_index;
+static rb_encoding *default_external;
rb_encoding *
rb_default_external_encoding(void)
{
- return rb_enc_from_index(default_external_index);
+ if (!default_external) {
+ default_external = rb_enc_from_index(default_external_index);
+ }
+ return default_external;
}
VALUE
@@ -1028,6 +1032,7 @@ void
rb_enc_set_default_external(VALUE encoding)
{
default_external_index = rb_enc_to_index(rb_to_encoding(encoding));
+ default_external = 0;
}
/*