diff options
| author | ksss <[email protected]> | 2014-03-05 15:06:29 +0000 |
|---|---|---|
| committer | ksss <[email protected]> | 2014-03-06 13:47:51 +0000 |
| commit | 54132e436494b4797ca53cbd934963e7d752ac42 (patch) | |
| tree | c490aee6faa4fbcc8aac66b205b5087af4c208bc /mrbgems | |
| parent | 4070b5987a76a2d633a99e137035749559e2da59 (diff) | |
| download | mruby-54132e436494b4797ca53cbd934963e7d752ac42.tar.gz mruby-54132e436494b4797ca53cbd934963e7d752ac42.zip | |
make embed string when create literals
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-print/src/print.c | 6 | ||||
| -rw-r--r-- | mrbgems/mruby-sprintf/src/sprintf.c | 8 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/src/string.c | 4 |
3 files changed, 11 insertions, 7 deletions
diff --git a/mrbgems/mruby-print/src/print.c b/mrbgems/mruby-print/src/print.c index 0cdbad6d4..e4e52624f 100644 --- a/mrbgems/mruby-print/src/print.c +++ b/mrbgems/mruby-print/src/print.c @@ -5,14 +5,12 @@ static void printstr(mrb_state *mrb, mrb_value obj) { - struct RString *str; char *s; int len; if (mrb_string_p(obj)) { - str = mrb_str_ptr(obj); - s = str->as.heap.ptr; - len = str->as.heap.len; + s = RSTRING_PTR(obj); + len = RSTRING_LEN(obj); fwrite(s, len, 1, stdout); } } diff --git a/mrbgems/mruby-sprintf/src/sprintf.c b/mrbgems/mruby-sprintf/src/sprintf.c index 785068999..8b0bff5be 100644 --- a/mrbgems/mruby-sprintf/src/sprintf.c +++ b/mrbgems/mruby-sprintf/src/sprintf.c @@ -712,7 +712,13 @@ retry: if (*p == 'p') arg = mrb_inspect(mrb, arg); str = mrb_obj_as_string(mrb, arg); len = RSTRING_LEN(str); - RSTRING(result)->as.heap.len = blen; + if (RSTRING(result)->flags & MRB_STR_EMBED) { + int tmp_n = len; + RSTRING(result)->flags &= ~MRB_STR_EMBED_LEN_MASK; + RSTRING(result)->flags |= tmp_n << MRB_STR_EMBED_LEN_SHIFT; + } else { + RSTRING(result)->as.heap.len = blen; + } if (flags&(FPREC|FWIDTH)) { slen = RSTRING_LEN(str); if (slen < 0) { diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index 274acf6f4..bb4b4c8fc 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -33,8 +33,8 @@ mrb_str_swapcase_bang(mrb_state *mrb, mrb_value str) struct RString *s = mrb_str_ptr(str); mrb_str_modify(mrb, s); - p = s->as.heap.ptr; - pend = s->as.heap.ptr + s->as.heap.len; + p = RSTRING_PTR(str); + pend = RSTRING_PTR(str) + RSTRING_LEN(str); while (p < pend) { if (ISUPPER(*p)) { *p = TOLOWER(*p); |
