File tree Expand file tree Collapse file tree 1 file changed +24
-3
lines changed
Expand file tree Collapse file tree 1 file changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -212,8 +212,6 @@ private static void InitClassBase(Type type, ClassBase impl)
212212 var item = ( ManagedType ) iter . Value ;
213213 var name = ( string ) iter . Key ;
214214 Runtime . PyDict_SetItemString ( dict , name , item . pyHandle ) ;
215- // info.members are already useless
216- item . DecrRefCount ( ) ;
217215 }
218216
219217 // If class has constructors, generate an __doc__ attribute.
@@ -463,7 +461,7 @@ private static ClassInfo GetClassInfo(Type type)
463461 }
464462
465463
466- internal class ClassInfo
464+ internal class ClassInfo : IDisposable
467465 {
468466 public Indexer indexer ;
469467 public Hashtable members ;
@@ -473,5 +471,28 @@ internal ClassInfo()
473471 members = new Hashtable ( ) ;
474472 indexer = null ;
475473 }
474+
475+ ~ ClassInfo ( )
476+ {
477+ Dispose ( ) ;
478+ }
479+
480+ private bool disposed = false ;
481+
482+ public void Dispose ( )
483+ {
484+ if ( ! disposed )
485+ {
486+ disposed = true ;
487+ foreach ( var member in members )
488+ {
489+ var item = ( ManagedType ) member ;
490+ if ( item != null )
491+ {
492+ item . DecrRefCount ( ) ;
493+ }
494+ }
495+ }
496+ }
476497 }
477498}
You can’t perform that action at this time.
0 commit comments