diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-08-13 00:02:01 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-08-13 00:02:01 +0000 |
commit | efef2c63084235c5296ac05ad9ce023495195897 (patch) | |
tree | ddb9b6e094ace467babc36a2f855f4ad35047b1a | |
parent | ccdcaf6b786e5ce8c8fa796433eb8e74675e4f95 (diff) | |
download | ruby-efef2c63084235c5296ac05ad9ce023495195897.tar.gz |
load.c (features_index_add): avoid repeat calculation
Reduce cognitive overhead, eye strain and keep lines less than 80
columns to benefit users of giant fonts (honestly I prefer 64 column
wrap :P).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | load.c | 7 |
2 files changed, 9 insertions, 2 deletions
@@ -1,3 +1,7 @@ +Thu Aug 13 09:01:25 2015 Eric Wong <e@80x24.org> + + * load.c (features_index_add): avoid repeat calculation + Wed Aug 12 21:57:31 2015 Koichi Sasada <ko1@atdot.net> * id_table.c: IMPL() macro accept op as _opname instead of opname @@ -239,16 +239,19 @@ features_index_add(VALUE feature, VALUE offset) p = ext ? ext : feature_end; while (1) { + long beg; + p--; while (p >= feature_str && *p != '/') p--; if (p < feature_str) break; /* Now *p == '/'. We reach this point for every '/' in `feature`. */ - short_feature = rb_str_subseq(feature, p + 1 - feature_str, feature_end - p - 1); + beg = p + 1 - feature_str; + short_feature = rb_str_subseq(feature, beg, feature_end - p - 1); features_index_add_single(short_feature, offset); if (ext) { - short_feature = rb_str_subseq(feature, p + 1 - feature_str, ext - p - 1); + short_feature = rb_str_subseq(feature, beg, ext - p - 1); features_index_add_single(short_feature, offset); } } |