summaryrefslogtreecommitdiff
path: root/sprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sprintf.c')
-rw-r--r--sprintf.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sprintf.c b/sprintf.c
index b9e40f4b87..5927c252dd 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -588,8 +588,11 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
rb_enc_raise(enc, rb_eArgError, "named%.*s after <%s>",
len, start, rb_id2name(id));
}
- id = rb_intern3(start + 1, len - 2 /* without parenthesis */, enc);
- nextvalue = GETNAMEARG(ID2SYM(id), start, len, enc);
+ nextvalue = GETNAMEARG((id = rb_check_id_cstr(start + 1,
+ len - 2 /* without parenthesis */,
+ enc),
+ ID2SYM(id)),
+ start, len, enc);
if (nextvalue == Qundef) {
rb_enc_raise(enc, rb_eKeyError, "key%.*s not found", len, start);
}