Skip to content

Commit 01a8d84

Browse files
committed
Avoid infinite loop when converting objects to strings.
1 parent 81fc5ff commit 01a8d84

File tree

2 files changed

+2
-0
lines changed

2 files changed

+2
-0
lines changed

src/object.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ mrb_convert_type(mrb_state *mrb, mrb_value val, enum mrb_vtype type, const char
338338
if (mrb_type(val) == type) return val;
339339
v = convert_type(mrb, val, tname, method, TRUE);
340340
if (mrb_type(v) != type) {
341+
if (type == MRB_TT_STRING) return mrb_any_to_s(mrb, val);
341342
mrb_raisef(mrb, E_TYPE_ERROR, "%v cannot be converted to %s by #%s", val, tname, method);
342343
}
343344
return v;

src/string.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,6 +1121,7 @@ mrb_str_to_str(mrb_state *mrb, mrb_value str)
11211121
return mrb_sym_str(mrb, mrb_symbol(str));
11221122
case MRB_TT_FIXNUM:
11231123
return mrb_fixnum_to_str(mrb, str, 10);
1124+
case MRB_TT_SCLASS:
11241125
case MRB_TT_CLASS:
11251126
case MRB_TT_MODULE:
11261127
return mrb_mod_to_s(mrb, str);

0 commit comments

Comments
 (0)