Hi Mikhael, I'm working on the FVWM::Tracker::WindowList code & I've discovered a serious bug. In short calls to deleteHandlers() don't work. (handlers still exist)
This becomes evident by checking the return value from the call to FVWM::Module::deleteHandler(). =================================================================== RCS file: /home/cvs/fvwm/fvwm/perllib/FVWM/Tracker.pm,v retrieving revision 1.8 diff -u -r1.8 Tracker.pm --- Tracker.pm 25 Oct 2003 03:00:00 -0000 1.8 +++ Tracker.pm 24 Apr 2004 15:12:04 -0000 @@ -89,7 +89,13 @@ foreach (@$handlerIds) { next unless defined delete $self->{handlerIds}->{$_}; - $self->{module}->deleteHandler($_) if $self->{module}; + if ($self->{module}) + { + if ($self->{module}->deleteHandler($_) != 1) + { + print(STDERR "Error deleting handler $_\n"); + } + } } } FVWM::Module::deleteHandler() returns an error because the passed array ref ($id) is actually a string. (The array ref gets implicitly converted to a string when it's used as a key-value in a hash. I don't know of a way to go from the string value of a ref to an actual ref.) I think the remedy is to use an actual string for handler ids (so FVWM::Module::addHandler returns "$type:$index" or similar). I'd code this up myself but I'm concerned about the impact it will have on the rest of perllib. What do you think? SCoTT. :) -- Visit the official FVWM web page at <URL:http://www.fvwm.org/>. To unsubscribe from the list, send "unsubscribe fvwm-workers" in the body of a message to [EMAIL PROTECTED] To report problems, send mail to [EMAIL PROTECTED]