Fix `mod.constants` not to have duplicate constant names; #4698

The fix was based on PR from @dearblue
parent a1a838d9
...@@ -882,7 +882,15 @@ const_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p) ...@@ -882,7 +882,15 @@ const_i(mrb_state *mrb, mrb_sym sym, mrb_value v, void *p)
ary = *(mrb_value*)p; ary = *(mrb_value*)p;
s = mrb_sym2name_len(mrb, sym, &len); s = mrb_sym2name_len(mrb, sym, &len);
if (len >= 1 && ISUPPER(s[0])) { if (len >= 1 && ISUPPER(s[0])) {
mrb_ary_push(mrb, ary, mrb_symbol_value(sym)); mrb_int i, alen = RARRAY_LEN(ary);
for (i=0; i<alen; i++) {
if (mrb_symbol(RARRAY_PTR(ary)[i]) == sym)
break;
}
if (i==alen) {
mrb_ary_push(mrb, ary, mrb_symbol_value(sym));
}
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment