Avoid `MRB_INLINE` for `mrb_str_modify()`; ref
Functions that are called infrequently need not to be inline.
MODIFY
include/mruby/string.h
include/mruby/string.h
@@ -108,6 +108,8 @@ MRB_API mrb_int mrb_str_strlen(mrb_state*, struct RString*);
void mrb_gc_free_str(mrb_state*, struct RString*);
+MRB_API void mrb_str_modify(mrb_state *mrb, struct RString *s);
+/* mrb_str_modify() with keeping ASCII flag if set */
MRB_API void mrb_str_modify_keep_ascii(mrb_state *mrb, struct RString *s);
/*
@@ -456,13 +458,6 @@ mrb_value mrb_str_inspect(mrb_state *mrb, mrb_value str);
mrb_bool mrb_str_beg_len(mrb_int str_len, mrb_int *begp, mrb_int *lenp);
mrb_value mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len);
-MRB_INLINE void
-mrb_str_modify(mrb_state *mrb, struct RString *s)
-{
- mrb_str_modify_keep_ascii(mrb, s);
- RSTR_UNSET_ASCII_FLAG(s);
-}
-
#ifdef MRB_UTF8_STRING
mrb_int mrb_utf8_len(const char *str, mrb_int byte_len);
#endif

MODIFY
src/string.c
src/string.c
@@ -770,6 +770,13 @@ mrb_str_modify_keep_ascii(mrb_state *mrb, struct RString *s)
}
}
+MRB_API void
+mrb_str_modify(mrb_state *mrb, struct RString *s)
+{
+ mrb_str_modify_keep_ascii(mrb, s);
+ RSTR_UNSET_ASCII_FLAG(s);
+}
+
MRB_API mrb_value
mrb_str_resize(mrb_state *mrb, mrb_value str, mrb_int len)
{

Avoid `MRB_INLINE` for `mrb_str_modify()`; ref #4579

Functions that are called infrequently need not to be inline.