summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-14 05:33:42 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-14 05:33:42 +0000
commit982618ed7e5dcf280fb034ee630ab608ae91ee1b (patch)
tree119935dd2a99191df1bd74a3de8951d59aca25be /string.c
parent925cc8ffd010df19a044875df252e939eaf0a8da (diff)
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.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/string.c b/string.c
index 227424d266..247ca5327a 100644
--- a/string.c
+++ b/string.c
@@ -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) {