mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
string.c: fast path of lstrip_offset
* string.c (lstrip_offset): add a fast path in the case of single byte optimizable strings, as well as rstrip_offset. [ruby-core:77392] [Feature #12788] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3973cc5820
commit
8d501ec021
2 changed files with 18 additions and 6 deletions
|
@ -1,3 +1,9 @@
|
|||
Mon Sep 26 14:10:54 2016 Ary Borenszweig <ary@esperanto.org.ar>
|
||||
|
||||
* string.c (lstrip_offset): add a fast path in the case of single
|
||||
byte optimizable strings, as well as rstrip_offset.
|
||||
[ruby-core:77392] [Feature #12788]
|
||||
|
||||
Mon Sep 26 12:00:12 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* gems/bundled_gems: update to minitest-5.9.1.
|
||||
|
|
18
string.c
18
string.c
|
@ -8041,13 +8041,19 @@ lstrip_offset(VALUE str, const char *s, const char *e, rb_encoding *enc)
|
|||
const char *const start = s;
|
||||
|
||||
if (!s || s >= e) return 0;
|
||||
/* remove spaces at head */
|
||||
while (s < e) {
|
||||
int n;
|
||||
unsigned int cc = rb_enc_codepoint_len(s, e, &n, enc);
|
||||
|
||||
if (!rb_isspace(cc)) break;
|
||||
s += n;
|
||||
/* remove spaces at head */
|
||||
if (single_byte_optimizable(str)) {
|
||||
while (s < e && ascii_isspace(*s)) s++;
|
||||
}
|
||||
else {
|
||||
while (s < e) {
|
||||
int n;
|
||||
unsigned int cc = rb_enc_codepoint_len(s, e, &n, enc);
|
||||
|
||||
if (!rb_isspace(cc)) break;
|
||||
s += n;
|
||||
}
|
||||
}
|
||||
return s - start;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue