Project

General

Profile

Bug #18189

Updated by ioquatix (Samuel Williams) over 2 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.

Back