Project

General

Profile

Bug #15625 » bug-15625.patch

nobu (Nobuyoshi Nakada), 03/04/2019 11:52 AM

View differences:

variable.c
VALUE klass;
VALUE path;
VALUE track;
VALUE checked;
struct fc_result *prev;
};
......
if (!RCLASS_CONST_TBL(value)) return ID_TABLE_CONTINUE;
else {
struct fc_result arg;
struct fc_result *list;
list = res;
while (list) {
if (list->track == value) return ID_TABLE_CONTINUE;
list = list->prev;
}
if (rb_hash_lookup2(res->checked, value, Qfalse))
return ID_TABLE_CONTINUE;
arg.name = key;
arg.preferred = res->preferred;
arg.path = 0;
arg.klass = res->klass;
arg.track = value;
arg.checked = res->checked;
arg.prev = res;
rb_hash_aset(arg.checked, value, Qtrue);
rb_id_table_foreach(RCLASS_CONST_TBL(value), fc_i, &arg);
if (arg.path) {
res->path = arg.path;
......
arg.path = 0;
arg.klass = klass;
arg.track = rb_cObject;
arg.checked = rb_ident_hash_new();
arg.prev = 0;
if (RCLASS_CONST_TBL(rb_cObject)) {
rb_hash_aset(arg.checked, rb_cObject, Qtrue)
rb_id_table_foreach(RCLASS_CONST_TBL(rb_cObject), fc_i, &arg);
}
if (arg.path) {
(2-2/2)