nav_buttons had a bug such that the marks dialog box was not being
populated when a leo file was opened. I fixed this on the trunk.

While I was investigating this bug I put a trace on the update method
and discovered that when I closed the file and reopened it, it was not
only receiving hooks that it had registered for, but also for  hooks
registered by its previous incarnation.

Every time I closed the test file and re-opened it , it got an extra
set of callbacks.

It appears that the references held by the hook manager was keeping
the callbacks (and everything  THEY referenced) alive after the frame
and its commander disposed of.  This obviously prevented dead objects
being garbage collected and caused dead code to be invoked.  In this
situation probably none of this really matters but it is obviously
undesirable behavior.

I have got around this by introducing module level callback for hooks
which dispatch to the appropriate per commander controller.  Only one
set of hook handlers are ever registered.

I am not sure how much this problem is worth worrying about, but I
thought you ought to be aware of it.

A long term solution may be to use pyDispatcher and translate doHook
and registerHook calls to this.  It should be possible to do this
transparently and so without effecting the current api or code. Only
code using the hook tables directly would be effected.

Bob
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to