From 54132e436494b4797ca53cbd934963e7d752ac42 Mon Sep 17 00:00:00 2001 From: ksss Date: Wed, 5 Mar 2014 15:06:29 +0000 Subject: make embed string when create literals --- mrbgems/mruby-sprintf/src/sprintf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'mrbgems/mruby-sprintf') 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) { -- cgit v1.2.3