Generate the string object last at the end of processing

This is simpler than processing `suffix` after the string object has been created.
This commit is contained in:
dearblue
2025-07-20 21:29:44 +09:00
parent d230bb16d4
commit 40371ebf01
+4 -6
View File
@@ -283,18 +283,16 @@ mrb_file_basename(mrb_state *mrb, mrb_value klass)
return mrb_str_new_lit(mrb, "/");
}
mrb_value result = mrb_str_new(mrb, base, endp - base);
// Suffix removal (CRuby compatible)
if (suffix && *suffix) {
mrb_int blen = RSTRING_LEN(result);
mrb_int blen = endp - base;
mrb_int slen = strlen(suffix);
if (blen > slen && memcmp(RSTRING_PTR(result) + blen - slen, suffix, slen) == 0) {
mrb_str_resize(mrb, result, blen - slen);
if (blen > slen && memcmp(endp - slen, suffix, slen) == 0) {
endp -= slen;
}
}
return result;
return mrb_str_new(mrb, base, endp - base);
}
static mrb_value