From 450684ab33f3b13bde520f831f857fe1e7dc5fd6 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Sun, 11 Aug 2019 20:48:37 +0900 Subject: `mrb_str_modify_keep_ascii` can embed one more byte The condition to make an embedded string was incorrect. Because there were several similar codes, extracted into `RSTR_EMBEDDABLE_P` macro. --- include/mruby/string.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include') diff --git a/include/mruby/string.h b/include/mruby/string.h index 7266c9084..aacbdbfc0 100644 --- a/include/mruby/string.h +++ b/include/mruby/string.h @@ -52,6 +52,8 @@ struct RString { } while (0) #define RSTR_EMBED_LEN(s)\ (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT) +#define RSTR_EMBEDDABLE_P(len) ((len) <= RSTRING_EMBED_LEN_MAX) + #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? (s)->as.ary : (s)->as.heap.ptr) #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len) #define RSTR_CAPA(s) (RSTR_EMBED_P(s) ? RSTRING_EMBED_LEN_MAX : (s)->as.heap.aux.capa) -- cgit v1.2.3