From b121e47b4478ea410274e2611472f7c594016508 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 15 Sep 2008 14:40:00 +0000 Subject: * 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 --- encoding.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'encoding.c') 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; } /* -- cgit v1.2.3