summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-06-10 22:16:05 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-06-10 22:16:05 -0700
commit5ca2d5e0ee6127d33e2b0d18a12e975f5235cae4 (patch)
treea9967ec1be0bb0636ab11630b2eef20dbc4556d8 /src/string.c
parentbd83a460c3c1f4ac8987657ab63bad87b59caf02 (diff)
parent3bb09f99284d6da3ee5192fb4636ad73981ad1f1 (diff)
downloadmruby-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.c10
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;