diff options
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 2 | ||||
| -rw-r--r-- | mrblib/string.rb | 13 | ||||
| -rw-r--r-- | src/string.c | 19 |
3 files changed, 4 insertions, 30 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index 7544ac8f4..c61f427dc 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -148,7 +148,7 @@ class String m = n + sep.size [ slice(0, n), sep, slice(m, size - m) ] else - [ self, "", "" ] + [ self[0..-1], "", "" ] end end diff --git a/mrblib/string.rb b/mrblib/string.rb index 0e7c8dc12..675026e73 100644 --- a/mrblib/string.rb +++ b/mrblib/string.rb @@ -29,25 +29,16 @@ class String string = dup self_len = length sep_len = separator.length - should_yield_subclass_instances = self.class != String while (pointer = string.index(separator, start)) pointer += sep_len pointer += 1 while paragraph_mode && string[pointer] == "\n" - if should_yield_subclass_instances - block.call(self.class.new(string[start, pointer - start])) - else - block.call(string[start, pointer - start]) - end + block.call(string[start, pointer - start]) start = pointer end return self if start == self_len - if should_yield_subclass_instances - block.call(self.class.new(string[start, self_len - start])) - else - block.call(string[start, self_len - start]) - end + block.call(string[start, self_len - start]) self end diff --git a/src/string.c b/src/string.c index 74263098a..e440bff8c 100644 --- a/src/string.c +++ b/src/string.c @@ -141,21 +141,6 @@ str_new(mrb_state *mrb, const char *p, size_t len) return str_init_normal(mrb, mrb_obj_alloc_string(mrb), p, len); } -static inline void -str_with_class(struct RString *s, mrb_value obj) -{ - s->c = mrb_str_ptr(obj)->c; -} - -static mrb_value -mrb_str_new_empty(mrb_state *mrb, mrb_value str) -{ - struct RString *s = str_new(mrb, 0, 0); - - str_with_class(s, str); - return mrb_obj_value(s); -} - MRB_API mrb_value mrb_str_new_capa(mrb_state *mrb, size_t capa) { @@ -949,7 +934,6 @@ mrb_str_times(mrb_state *mrb, mrb_value self) len = RSTRING_LEN(self)*times; str2 = str_new(mrb, 0, len); - str_with_class(str2, self); p = RSTR_PTR(str2); if (len > 0) { n = RSTRING_LEN(self); @@ -1097,7 +1081,6 @@ mrb_str_dup(mrb_state *mrb, mrb_value str) struct RString *s = mrb_str_ptr(str); struct RString *dup = str_new(mrb, 0, 0); - str_with_class(dup, str); return str_replace(mrb, dup, s); } @@ -2199,7 +2182,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str) } if (RSTRING_LEN(str) > 0 && (lim_p || RSTRING_LEN(str) > beg || lim < 0)) { if (RSTRING_LEN(str) == beg) { - tmp = mrb_str_new_empty(mrb, str); + tmp = mrb_str_new(mrb, 0, 0); } else { tmp = mrb_str_byte_subseq(mrb, str, beg, RSTRING_LEN(str)-beg); |
