summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2021-05-23 16:09:17 +0900
committernagachika <nagachika@ruby-lang.org>2021-05-23 16:09:17 +0900
commit5af5ea7f860ed64062796e54e73274e7a56c7280 (patch)
tree0a3bb24a41eb093858593de234c6169833500cac /string.c
parent44b87adc07621b6a8eddfcf4aaff34ce634179d4 (diff)
merge revision(s) cfd162d535c7a4f8b1f95255cc6be696a8b75557: [Backport #17467]
Make String#{strip,lstrip}{,!} strip leading NUL bytes The documentation already specifies that they strip whitespace and defines whitespace to include null. This wraps the new behavior in the appropriate guards in the specs, but does not specify behavior for previous versions, because this is a bug that could be backported. Fixes [Bug #17467] --- spec/ruby/core/string/lstrip_spec.rb | 18 ++++++++++++------ spec/ruby/core/string/strip_spec.rb | 22 ++++++++++------------ string.c | 4 ++-- test/ruby/test_string.rb | 16 ++++++++++++++++ 4 files changed, 40 insertions(+), 20 deletions(-)
Diffstat (limited to 'string.c')
-rw-r--r--string.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/string.c b/string.c
index 82850577ff..c2919abeee 100644
--- a/string.c
+++ b/string.c
@@ -9265,14 +9265,14 @@ lstrip_offset(VALUE str, const char *s, const char *e, rb_encoding *enc)
/* remove spaces at head */
if (single_byte_optimizable(str)) {
- while (s < e && ascii_isspace(*s)) s++;
+ while (s < e && (*s == '\0' || 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;
+ if (cc && !rb_isspace(cc)) break;
s += n;
}
}