aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--string.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/string.c b/string.c
index ce9cce03d1..7bb4d5bd90 100644
--- a/string.c
+++ b/string.c
@@ -7815,6 +7815,8 @@ rb_str_scrub(int argc, VALUE *argv, VALUE str)
VALUE buf = rb_str_buf_new(RSTRING_LEN(str));
if (rb_block_given_p()) {
rep = NULL;
+ replen = 0;
+ rep7bit_p = FALSE;
}
else if (!NIL_P(repl)) {
rep = RSTRING_PTR(repl);
@@ -7866,8 +7868,8 @@ rb_str_scrub(int argc, VALUE *argv, VALUE str)
for (; clen > 1; clen--) {
ret = rb_enc_precise_mbclen(q, q + clen, enc);
if (MBCLEN_NEEDMORE_P(ret)) break;
- else if (MBCLEN_INVALID_P(ret)) continue;
- else UNREACHABLE;
+ if (MBCLEN_INVALID_P(ret)) continue;
+ UNREACHABLE;
}
}
if (rep) {
@@ -7978,8 +7980,8 @@ rb_str_scrub(int argc, VALUE *argv, VALUE str)
for (; clen > mbminlen; clen-=mbminlen) {
ret = rb_enc_precise_mbclen(q, q + clen, enc);
if (MBCLEN_NEEDMORE_P(ret)) break;
- else if (MBCLEN_INVALID_P(ret)) continue;
- else UNREACHABLE;
+ if (MBCLEN_INVALID_P(ret)) continue;
+ UNREACHABLE;
}
}
if (rep) {