summaryrefslogtreecommitdiffhomepage
path: root/src/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.c')
-rw-r--r--src/error.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/error.c b/src/error.c
index e65bc5eaf..8b8b8bd35 100644
--- a/src/error.c
+++ b/src/error.c
@@ -249,10 +249,16 @@ mrb_vformat(mrb_state *mrb, const char *format, va_list ap)
}
}
else if (c == '\\') {
- if (!*p) break;
- p++;
+ if (*p) {
+ size = p - b - 1;
+ mrb_ary_push(mrb, ary, mrb_str_new(mrb, b, size));
+ mrb_ary_push(mrb, ary, mrb_str_new(mrb, p, 1));
+ b = ++p;
+ }
+ else {
+ break;
+ }
}
- p++;
}
if (b == format) {
return mrb_str_new_cstr(mrb, format);