mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #2049 from ksss/str-dup
mrb_str_dup return shared string instead of new string
This commit is contained in:
+1
-3
@@ -134,9 +134,7 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep)
|
||||
mrb_free(mrb, irep->iseq);
|
||||
for (i=0; i<irep->plen; i++) {
|
||||
if (mrb_type(irep->pool[i]) == MRB_TT_STRING) {
|
||||
if ((mrb_str_ptr(irep->pool[i])->flags & (MRB_STR_NOFREE|MRB_STR_EMBED)) == 0) {
|
||||
mrb_free(mrb, RSTRING_PTR(irep->pool[i]));
|
||||
}
|
||||
mrb_gc_free_str(mrb, RSTRING(irep->pool[i]));
|
||||
mrb_free(mrb, mrb_obj_ptr(irep->pool[i]));
|
||||
}
|
||||
#ifdef MRB_WORD_BOXING
|
||||
|
||||
+3
-2
@@ -796,10 +796,11 @@ mrb_str_index(mrb_state *mrb, mrb_value str, mrb_value sub, mrb_int offset)
|
||||
mrb_value
|
||||
mrb_str_dup(mrb_state *mrb, mrb_value str)
|
||||
{
|
||||
/* should return shared string */
|
||||
struct RString *s = mrb_str_ptr(str);
|
||||
struct RString *dup = str_new(mrb, 0, 0);
|
||||
|
||||
return mrb_str_new(mrb, STR_PTR(s), STR_LEN(s));
|
||||
str_with_class(mrb, dup, str);
|
||||
return str_replace(mrb, dup, s);
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
|
||||
Reference in New Issue
Block a user