flo_to_s(mrb_state *mrb, mrb_value flt)
{
mrb_float f = mrb_float(flt);
flo_to_s(mrb_state *mrb, mrb_value flt)
{
mrb_float f = mrb_float(flt);
- return f < 0 ? mrb_str_new_lit(mrb, "-Infinity")
- : mrb_str_new_lit(mrb, "Infinity");
+ str = f < 0 ? mrb_str_new_lit(mrb, "-Infinity")
+ : mrb_str_new_lit(mrb, "Infinity");
+ goto exit;
p = RSTRING_PTR(str) + e_pos;
memmove(p + 2, p, len - e_pos);
memcpy(p, ".0", 2);
p = RSTRING_PTR(str) + e_pos;
memmove(p + 2, p, len - e_pos);
memcpy(p, ".0", 2);
if (base < 2 || 36 < base) {
mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %i", base);
if (base < 2 || 36 < base) {
mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %i", base);
- return mrb_str_new(mrb, b, buf + sizeof(buf) - b);
+ str = mrb_str_new(mrb, b, buf + sizeof(buf) - b);
+ RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
+ return str;