From 41c43234a7870af32cf4bec830229df0dea1c142 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Tue, 22 Oct 2019 21:56:40 +0900 Subject: Fix incorrect `MRB_STR_ASCII` flag update in `mrb_str_dump` ### Example (with `MRB_UTF8_STRING`) ```ruby s = "\u3042" p s.size s.dump p s.size ``` #### Before this patch: ``` 1 3 ``` #### After this patch: ``` 1 1 ``` --- src/string.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/string.c b/src/string.c index d3774f8c4..6ab9a1ff7 100644 --- a/src/string.c +++ b/src/string.c @@ -1388,8 +1388,13 @@ str_escape(mrb_state *mrb, mrb_value str, mrb_bool inspect) } mrb_str_cat_lit(mrb, result, "\""); #ifdef MRB_UTF8_STRING - mrb_str_ptr(str)->flags |= ascii_flag; - mrb_str_ptr(result)->flags |= ascii_flag; + if (inspect) { + mrb_str_ptr(str)->flags |= ascii_flag; + mrb_str_ptr(result)->flags |= ascii_flag; + } + else { + RSTR_SET_ASCII_FLAG(mrb_str_ptr(result)); + } #endif return result; -- cgit v1.2.3