diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-10-30 09:01:12 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-10-30 09:01:12 +0900 |
| commit | cca5e0977ca4ac54d109e68e256e89b041833c7a (patch) | |
| tree | d1baa4d39e501bf42b7501b891b8437152e60713 | |
| parent | eebb56713e27cde27a7b899da8636a0634704863 (diff) | |
| download | mruby-cca5e0977ca4ac54d109e68e256e89b041833c7a.tar.gz mruby-cca5e0977ca4ac54d109e68e256e89b041833c7a.zip | |
VS 2017 C does not understand inline struct initialization; ref #4153
| -rw-r--r-- | mrbgems/mruby-string-ext/src/string.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index 9b317386e..9fd84af7b 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -252,7 +252,7 @@ enum tr_pattern_type { struct tr_pattern { uint8_t type; // 1:in-order, 2:range mrb_bool flag_reverse : 1; - mrb_bool flag_on_stack : 1; + mrb_bool flag_on_heap : 1; uint16_t n; union { uint16_t start_pos; @@ -261,14 +261,14 @@ struct tr_pattern { struct tr_pattern *next; }; -#define STATIC_TR_PATTERN { TR_UNINITIALIZED, FALSE, TRUE, 0, {}, NULL } +#define STATIC_TR_PATTERN { 0 } static inline void tr_free_pattern(mrb_state *mrb, struct tr_pattern *pat) { while (pat) { struct tr_pattern *p = pat->next; - if (!pat->flag_on_stack) { + if (pat->flag_on_heap) { mrb_free(mrb, pat); } pat = p; @@ -304,7 +304,7 @@ tr_parse_pattern(mrb_state *mrb, struct tr_pattern *ret, const mrb_value v_patte } pat1->type = TR_RANGE; pat1->flag_reverse = flag_reverse; - pat1->flag_on_stack = ret_uninit; + pat1->flag_on_heap = !ret_uninit; pat1->n = pattern[i+2] - pattern[i] + 1; pat1->next = NULL; pat1->val.ch[0] = pattern[i]; @@ -328,7 +328,7 @@ tr_parse_pattern(mrb_state *mrb, struct tr_pattern *ret, const mrb_value v_patte } pat1->type = TR_IN_ORDER; pat1->flag_reverse = flag_reverse; - pat1->flag_on_stack = ret_uninit; + pat1->flag_on_heap = !ret_uninit; pat1->n = len; pat1->next = NULL; pat1->val.start_pos = start_pos; |
