diff options
| author | Masamitsu MURASE <[email protected]> | 2012-06-11 01:56:46 +0900 |
|---|---|---|
| committer | Masamitsu MURASE <[email protected]> | 2012-06-11 02:00:32 +0900 |
| commit | 3bb09f99284d6da3ee5192fb4636ad73981ad1f1 (patch) | |
| tree | 91420f3bc53edf566e9d6de5963971f8074f57e5 | |
| parent | 46c9260305a7acc7ee2e1bd1d2441b56cee89f3f (diff) | |
| download | mruby-3bb09f99284d6da3ee5192fb4636ad73981ad1f1.tar.gz mruby-3bb09f99284d6da3ee5192fb4636ad73981ad1f1.zip | |
string.subseq should create new string based on 'ptr' not on 'aux.shared'.
| -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; |
