Hello, I have a subclass of NBExternalObject to refer to an external object (from the ICU library). When I'm done with the object I need to close it. The following instance method takes care of this:
primClose <primitive: #primitiveNativeCall module: #NativeBoostPlugin> self nbCall: #( void ucal_close( ICUCalendarNB self ) ) This works fine. But now I want to make use of the NBExternalResourceManager so that external objects are closed automatically when they are no longer referenced. For this I have implemented the required instance method: resourceData ^ handle And the class methods: finalizeResourceData: aHandle Transcript show: 'Closing ', aHandle printString ; cr. aHandle isNull ifFalse: [ self primClose: aHandle ] and primClose: aHandle <primitive: #primitiveNativeCall module: #NativeBoostPlugin> ^ self nbCall: #( void ucal_close( void* aHandle ) ) But now two things are going wrong: - The #finalizeResourceData: doesn't seem to get called - If I call the #primClose: directy with the handle as an argument my Image crashes. Is the signature of the #nbCall: message wrong? Jan. PS: I'm using the latest NB-Cog-VM from https://ci.lille.inria.fr/pharo/view/Cog/
