diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 2 | ||||
| -rw-r--r-- | src/class.c | 8 | ||||
| -rw-r--r-- | src/fmt_fp.c | 2 | ||||
| -rw-r--r-- | src/object.c | 2 | ||||
| -rw-r--r-- | src/string.c | 22 | ||||
| -rw-r--r-- | src/variable.c | 4 | ||||
| -rw-r--r-- | src/vm.c | 2 |
7 files changed, 24 insertions, 18 deletions
diff --git a/src/array.c b/src/array.c index 9f7c27df0..c6cca3816 100644 --- a/src/array.c +++ b/src/array.c @@ -1093,7 +1093,7 @@ join_ary(mrb_state *mrb, mrb_value ary, mrb_value sep, mrb_value list) mrb_ary_push(mrb, list, ary); - result = mrb_str_buf_new(mrb, 64); + result = mrb_str_new_capa(mrb, 64); for (i=0; i<RARRAY_LEN(ary); i++) { if (i > 0 && !mrb_nil_p(sep)) { diff --git a/src/class.c b/src/class.c index 97a4c9c57..9bba28684 100644 --- a/src/class.c +++ b/src/class.c @@ -1332,7 +1332,7 @@ mrb_mod_attr_reader(mrb_state *mrb, mrb_value mod) method = to_sym(mrb, argv[i]); name = mrb_sym2str(mrb, method); - str = mrb_str_buf_new(mrb, RSTRING_LEN(name)+1); + str = mrb_str_new_capa(mrb, RSTRING_LEN(name)+1); mrb_str_cat_lit(mrb, str, "@"); mrb_str_cat_str(mrb, str, name); sym = mrb_intern_str(mrb, str); @@ -1374,7 +1374,7 @@ mrb_mod_attr_writer(mrb_state *mrb, mrb_value mod) /* prepare iv name (@name) */ name = mrb_sym2str(mrb, method); - str = mrb_str_buf_new(mrb, RSTRING_LEN(name)+1); + str = mrb_str_new_capa(mrb, RSTRING_LEN(name)+1); mrb_str_cat_lit(mrb, str, "@"); mrb_str_cat_str(mrb, str, name); sym = mrb_intern_str(mrb, str); @@ -1382,7 +1382,7 @@ mrb_mod_attr_writer(mrb_state *mrb, mrb_value mod) attr = mrb_symbol_value(sym); /* prepare method name (name=) */ - str = mrb_str_buf_new(mrb, RSTRING_LEN(str)); + str = mrb_str_new_capa(mrb, RSTRING_LEN(str)); mrb_str_cat_str(mrb, str, name); mrb_str_cat_lit(mrb, str, "="); method = mrb_intern_str(mrb, str); @@ -1766,7 +1766,7 @@ mrb_mod_to_s(mrb_state *mrb, mrb_value klass) struct RClass *c; mrb_value path; - str = mrb_str_buf_new(mrb, 32); + str = mrb_str_new_capa(mrb, 32); c = mrb_class_ptr(klass); path = mrb_class_path(mrb, c); diff --git a/src/fmt_fp.c b/src/fmt_fp.c index 440a50071..c1c2ad703 100644 --- a/src/fmt_fp.c +++ b/src/fmt_fp.c @@ -364,7 +364,7 @@ mrb_float_to_str(mrb_state *mrb, mrb_value flo, const char *fmt) struct fmt_args f; f.mrb = mrb; - f.str = mrb_str_buf_new(mrb, 24); + f.str = mrb_str_new_capa(mrb, 24); if (fmt_core(&f, fmt, mrb_float(flo)) < 0) { mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid format string"); } diff --git a/src/object.c b/src/object.c index a78e9a443..368e90b9f 100644 --- a/src/object.c +++ b/src/object.c @@ -438,7 +438,7 @@ mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t) MRB_API mrb_value mrb_any_to_s(mrb_state *mrb, mrb_value obj) { - mrb_value str = mrb_str_buf_new(mrb, 20); + mrb_value str = mrb_str_new_capa(mrb, 20); const char *cname = mrb_obj_classname(mrb, obj); mrb_str_cat_lit(mrb, str, "#<"); diff --git a/src/string.c b/src/string.c index 551d33a12..801e77f16 100644 --- a/src/string.c +++ b/src/string.c @@ -94,12 +94,8 @@ mrb_str_new_empty(mrb_state *mrb, mrb_value str) return mrb_obj_value(s); } -#ifndef MRB_STR_BUF_MIN_SIZE -# define MRB_STR_BUF_MIN_SIZE 128 -#endif - MRB_API mrb_value -mrb_str_buf_new(mrb_state *mrb, size_t capa) +mrb_str_new_capa(mrb_state *mrb, size_t capa) { struct RString *s; @@ -108,9 +104,6 @@ mrb_str_buf_new(mrb_state *mrb, size_t capa) if (capa >= MRB_INT_MAX) { mrb_raise(mrb, E_ARGUMENT_ERROR, "string capacity size too big"); } - if (capa < MRB_STR_BUF_MIN_SIZE) { - capa = MRB_STR_BUF_MIN_SIZE; - } s->as.heap.len = 0; s->as.heap.aux.capa = (mrb_int)capa; s->as.heap.ptr = (char *)mrb_malloc(mrb, capa+1); @@ -119,6 +112,19 @@ mrb_str_buf_new(mrb_state *mrb, size_t capa) return mrb_obj_value(s); } +#ifndef MRB_STR_BUF_MIN_SIZE +# define MRB_STR_BUF_MIN_SIZE 128 +#endif + +MRB_API mrb_value +mrb_str_buf_new(mrb_state *mrb, size_t capa) +{ + if (capa < MRB_STR_BUF_MIN_SIZE) { + capa = MRB_STR_BUF_MIN_SIZE; + } + return mrb_str_new_capa(mrb, capa); +} + static void resize_capa(mrb_state *mrb, struct RString *s, size_t capacity) { diff --git a/src/variable.c b/src/variable.c index 91081e867..2902ad288 100644 --- a/src/variable.c +++ b/src/variable.c @@ -513,7 +513,7 @@ mrb_obj_iv_inspect(mrb_state *mrb, struct RObject *obj) if (len > 0) { const char *cn = mrb_obj_classname(mrb, mrb_obj_value(obj)); - mrb_value str = mrb_str_buf_new(mrb, 30); + mrb_value str = mrb_str_new_capa(mrb, 30); mrb_str_cat_lit(mrb, str, "-<"); mrb_str_cat_cstr(mrb, str, cn); @@ -1108,7 +1108,7 @@ mrb_class_find_path(mrb_state *mrb, struct RClass *c) name = find_class_sym(mrb, mrb_class_ptr(outer), c); if (name == 0) return mrb_nil_value(); str = mrb_class_name(mrb, mrb_class_ptr(outer)); - path = mrb_str_buf_new(mrb, 0); + path = mrb_str_new_capa(mrb, 0); mrb_str_cat_cstr(mrb, path, str); mrb_str_cat_cstr(mrb, path, "::"); @@ -813,7 +813,7 @@ localjump_error(mrb_state *mrb, localjump_error_kind kind) mrb_value msg; mrb_value exc; - msg = mrb_str_buf_new(mrb, sizeof(lead) + 7); + msg = mrb_str_new_capa(mrb, sizeof(lead) + 7); mrb_str_cat(mrb, msg, lead, sizeof(lead) - 1); mrb_str_cat(mrb, msg, kind_str[kind], kind_str_len[kind]); exc = mrb_exc_new_str(mrb, E_LOCALJUMP_ERROR, msg); |
