|
Erik Cassel wrote:
Don't forget to remove the key-value pair after the COM object is gone... or you'll start to leak registry memory. Does your usedata's destructor clean up its own registry entry?
That's not necessary. As I attempted to explain earlier, the userdata references aren't stored directly in the registry, but in a table referenced by the registry. The table which references the userdata has a metatable, and that metatable's __mode value is "v", so the values are weak references; the garbage collector will do the necessary cleanup itself; my __gc metamethod only has to release the wrapped COM object. See the Weak Tables chapter in _Programming in Lua_ (http://lua.org/pil/).
I hope this helps. -- Matt Campbell Lead Programmer Serotek Corporation www.freedombox.info "The Accessibility Anywhere People"