@@ -2424,21 +2424,23 @@ def setPollFDNotifiers(
24242424 if not self .__has_pollfd_finalizer :
24252425 self .__has_pollfd_finalizer = True
24262426 try :
2427- self . __registerFinalizer (
2428- handle = id ( self ),
2429- finalizer = weakref .finalize (
2430- self ,
2431- self .__finalizePollFDNotifiers , # Note: staticmethod
2432- context_p = self .__context_p ,
2433- libusb_set_pollfd_notifiers = libusb1 . libusb_set_pollfd_notifiers ,
2434- ) ,
2427+ finalizer_handle = id ( self )
2428+ finalizer_dict = self . __finalizer_dict
2429+ finalizer = weakref .finalize (
2430+ self ,
2431+ self .__finalizePollFDNotifiers , # Note: staticmethod
2432+ context_p = self .__context_p ,
2433+ unregisterFinalizer = lambda : finalizer_dict . pop ( finalizer_handle ) ,
2434+ libusb_set_pollfd_notifiers = libusb1 . libusb_set_pollfd_notifiers ,
24352435 )
2436+ self .__registerFinalizer (finalizer_handle , finalizer )
24362437 except ValueError : # Already registered
24372438 pass
24382439
24392440 @staticmethod
24402441 def __finalizePollFDNotifiers (
24412442 context_p ,
2443+ unregisterFinalizer ,
24422444 libusb_set_pollfd_notifiers ,
24432445
24442446 null_pointer = _null_pointer ,
@@ -2451,6 +2453,7 @@ def __finalizePollFDNotifiers(
24512453 removed_cb_p ,
24522454 null_pointer ,
24532455 )
2456+ unregisterFinalizer ()
24542457
24552458 @_validContext
24562459 def getNextTimeout (self ):
0 commit comments