summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-08-11 20:48:37 +0900
committerKOBAYASHI Shuji <[email protected]>2019-08-11 20:48:37 +0900
commit450684ab33f3b13bde520f831f857fe1e7dc5fd6 (patch)
tree5615214b4734ff687047bd784fcaaefb77c2649b /include
parentce7fd7e1a34adfac6974caf3f09ef5899f8a7670 (diff)
downloadmruby-450684ab33f3b13bde520f831f857fe1e7dc5fd6.tar.gz
mruby-450684ab33f3b13bde520f831f857fe1e7dc5fd6.zip
`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.
Diffstat (limited to 'include')
-rw-r--r--include/mruby/string.h2
1 files changed, 2 insertions, 0 deletions
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)