summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-10-30 09:01:12 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-10-30 09:01:12 +0900
commitcca5e0977ca4ac54d109e68e256e89b041833c7a (patch)
treed1baa4d39e501bf42b7501b891b8437152e60713
parenteebb56713e27cde27a7b899da8636a0634704863 (diff)
downloadmruby-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.c10
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;