diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-06-10 22:16:05 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-06-10 22:16:05 -0700 |
| commit | 5ca2d5e0ee6127d33e2b0d18a12e975f5235cae4 (patch) | |
| tree | a9967ec1be0bb0636ab11630b2eef20dbc4556d8 /src/string.c | |
| parent | bd83a460c3c1f4ac8987657ab63bad87b59caf02 (diff) | |
| parent | 3bb09f99284d6da3ee5192fb4636ad73981ad1f1 (diff) | |
| download | mruby-5ca2d5e0ee6127d33e2b0d18a12e975f5235cae4.tar.gz mruby-5ca2d5e0ee6127d33e2b0d18a12e975f5235cae4.zip | |
Merge pull request #256 from masamitsu-murase/modify_string_slice
"slice" of shared string returns invalid result
Diffstat (limited to 'src/string.c')
| -rw-r--r-- | src/string.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/string.c b/src/string.c index e955b3f22..67cc32137 100644 --- a/src/string.c +++ b/src/string.c @@ -1199,14 +1199,14 @@ mrb_str_eql(mrb_state *mrb, mrb_value self) static mrb_value mrb_str_subseq(mrb_state *mrb, mrb_value str, int beg, int len) { - struct RString *s; + struct RString *orig, *s; struct mrb_shared_string *shared; - s = mrb_str_ptr(str); - str_make_shared(mrb, s); - shared = s->aux.shared; + orig = mrb_str_ptr(str); + str_make_shared(mrb, orig); + shared = orig->aux.shared; s = mrb_obj_alloc_string(mrb); - s->ptr = shared->ptr + beg; + s->ptr = orig->ptr + beg; s->len = len; s->aux.shared = shared; s->flags |= MRB_STR_SHARED; |
