summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/string.c4
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);
}