summaryrefslogtreecommitdiff
path: root/sprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sprintf.c')
-rw-r--r--sprintf.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sprintf.c b/sprintf.c
index 89541344a9..8488d58cbd 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -520,7 +520,10 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
VALUE sym = Qnil;
for (t = p; t < end && *t != '%'; t++) ;
- if (t + 1 == end) ++t;
+ if (t + 1 == end) {
+ if (*t == '%') rb_raise(rb_eArgError, "incomplete format specifier");
+ ++t;
+ }
PUSH(p, t - p);
if (coderange != ENC_CODERANGE_BROKEN && scanned < blen) {
scanned += rb_str_coderange_scan_restartable(buf+scanned, buf+blen, enc, &coderange);