diff options
| -rw-r--r-- | src/string.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/string.c b/src/string.c index 21be97db6..1a8b01c66 100644 --- a/src/string.c +++ b/src/string.c @@ -2868,13 +2868,13 @@ sub_replace(mrb_state *mrb, mrb_value self) mrb_str_cat(mrb, result, "\\", 1); break; case '`': - mrb_str_cat(mrb, result, RSTRING_PTR(self), found); + mrb_str_cat(mrb, result, RSTRING_PTR(self), chars2bytes(self, 0, found)); break; case '&': case '0': mrb_str_cat(mrb, result, match, mlen); break; case '\'': - offset = found + mlen; + offset = chars2bytes(self, 0, found) + mlen; if (RSTRING_LEN(self) > offset) { mrb_str_cat(mrb, result, RSTRING_PTR(self)+offset, RSTRING_LEN(self)-offset); } |
