Bug #18782 » 0002-Prevent-race-between-GC-mark-and-autoload-setup.patch
| variable.c | ||
|---|---|---|
|     struct autoload_data_i *p = ptr; | ||
|     rb_gc_mark_movable(p->feature); | ||
|     /* allow GC to free us if no modules refer to this via autoload_const.ad */ | ||
|     if (ccan_list_empty(&p->constants)) { | ||
|         rb_hash_delete(autoload_featuremap, p->feature); | ||
|     } | ||
| } | ||
| static void | ||
| ... | ... | |
| { | ||
|     struct autoload_data_i *p = ptr; | ||
|     /* we may leak some memory at VM shutdown time, no big deal */ | ||
|     if (ccan_list_empty(&p->constants)) { | ||
| 	xfree(p); | ||
|     } | ||
|     xfree(p); | ||
| } | ||
| static size_t | ||