File tree Expand file tree Collapse file tree 1 file changed +16
-11
lines changed
Expand file tree Collapse file tree 1 file changed +16
-11
lines changed Original file line number Diff line number Diff line change @@ -186,27 +186,32 @@ rb_namespace_entry_mark(void *ptr)
186186 rb_gc_mark (ns -> gvar_tbl );
187187}
188188
189- // TODO: implemente namespace_entry_free to free loading_table etc
190- /*
191189static int
192190free_loading_table_entry (st_data_t key , st_data_t value , st_data_t arg )
193191{
194192 xfree ((char * )key );
195193 return ST_DELETE ;
196194}
197- if (vm->loading_table) {
198- st_foreach(vm->loading_table, free_loading_table_entry, 0);
199- st_free_table(vm->loading_table);
200- vm->loading_table = 0;
201- }
202- */
203- #define namespace_entry_free RUBY_TYPED_DEFAULT_FREE
195+
196+ static void
197+ namespace_entry_free (void * ptr )
198+ {
199+ rb_namespace_t * ns = (rb_namespace_t * )ptr ;
200+ if (ns -> loading_table ) {
201+ st_foreach (ns -> loading_table , free_loading_table_entry , 0 );
202+ st_free_table (ns -> loading_table );
203+ ns -> loading_table = 0 ;
204+ }
205+ xfree (ptr );
206+ }
204207
205208static size_t
206209namespace_entry_memsize (const void * ptr )
207210{
208- // TODO: rb_st_memsize(loaded_features_index) + rb_st_memsize(vm->loading_table)
209- return sizeof (rb_namespace_t );
211+ const rb_namespace_t * ns = (const rb_namespace_t * )ptr ;
212+ return sizeof (rb_namespace_t ) + \
213+ rb_st_memsize (ns -> loaded_features_index ) + \
214+ rb_st_memsize (ns -> loading_table );
210215}
211216
212217const rb_data_type_t rb_namespace_data_type = {
You can’t perform that action at this time.
0 commit comments