Bug #18189
Updated by ioquatix (Samuel Williams) about 3 years ago
It's possible for `rb_cString` to be NULL during `Init_Object` and thus `Init_class_hierarchy` which means that `rb_fstring_lit`, which invokes `setup_fake_str`, invokes `RBASIC_SET_CLASS_RAW(..., NULL)` (or possibly just something totally random if it's not zero initialized!). Later on in `register_fstring` we have an assertion which also fails to detect the abnormality: ``` assert(RBASIC_CLASS(args.fstr) == rb_cString); ``` Because both are NULL. Oops. It seems that later on, `rb_cString` is set some how on that specific fstring. the class. But in my own usage of `rb_define_module_under` during `InitVM_Object`, `rb_define_module_under`, this creates invalid class names which fail when passed into Ruby land.