diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-14 05:33:42 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-14 05:33:42 +0000 |
commit | 982618ed7e5dcf280fb034ee630ab608ae91ee1b (patch) | |
tree | 119935dd2a99191df1bd74a3de8951d59aca25be /string.c | |
parent | 925cc8ffd010df19a044875df252e939eaf0a8da (diff) | |
download | ruby-982618ed7e5dcf280fb034ee630ab608ae91ee1b.tar.gz |
string.c: reduce function calls
* string.c (rb_enc_cr_str_buf_cat): reduce invariant function
calls of rb_enc_from_index.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -2086,6 +2086,7 @@ rb_enc_cr_str_buf_cat(VALUE str, const char *ptr, long len, int str_encindex = ENCODING_GET(str); int res_encindex; int str_cr, res_cr; + rb_encoding *str_enc, *ptr_enc; str_cr = RSTRING_LEN(str) ? ENC_CODERANGE(str) : ENC_CODERANGE_7BIT; @@ -2095,8 +2096,8 @@ rb_enc_cr_str_buf_cat(VALUE str, const char *ptr, long len, } } else { - rb_encoding *str_enc = rb_enc_from_index(str_encindex); - rb_encoding *ptr_enc = rb_enc_from_index(ptr_encindex); + str_enc = rb_enc_from_index(str_encindex); + ptr_enc = rb_enc_from_index(ptr_encindex); if (!rb_enc_asciicompat(str_enc) || !rb_enc_asciicompat(ptr_enc)) { if (len == 0) return str; @@ -2122,10 +2123,11 @@ rb_enc_cr_str_buf_cat(VALUE str, const char *ptr, long len, if (str_encindex != ptr_encindex && str_cr != ENC_CODERANGE_7BIT && ptr_cr != ENC_CODERANGE_7BIT) { + str_enc = rb_enc_from_index(str_encindex); + ptr_enc = rb_enc_from_index(ptr_encindex); incompatible: rb_raise(rb_eEncCompatError, "incompatible character encodings: %s and %s", - rb_enc_name(rb_enc_from_index(str_encindex)), - rb_enc_name(rb_enc_from_index(ptr_encindex))); + rb_enc_name(str_enc), rb_enc_name(ptr_enc)); } if (str_cr == ENC_CODERANGE_UNKNOWN) { |