diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-08-11 20:48:37 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-08-11 20:48:37 +0900 |
| commit | 450684ab33f3b13bde520f831f857fe1e7dc5fd6 (patch) | |
| tree | 5615214b4734ff687047bd784fcaaefb77c2649b /include | |
| parent | ce7fd7e1a34adfac6974caf3f09ef5899f8a7670 (diff) | |
| download | mruby-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.h | 2 |
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) |
