Re: Tk::Dialog memory leak?

ReneeB <[email protected]> Sat, 15 Jul 2006 10:56:09 +0200
Newsgroups gmane.comp.lang.perl.tk
Message-ID <[email protected]>
Hi,

Tk::Tree isn't destroyed because it inherits from Tk::Derived not from 
Tk::Widget.
I'll try to release a new Tk::Tree version today.

ReneeB


Petr Pajas schrieb:
> Hi,
>
> I have a dialog box which I cannot easily reuse, so it is created many times 
> during the application run. After creating it, I can't find a way to destroy 
> it completely even if I explicitly call $d->destroy all variables go out of 
> scope. Here is a demo:
>
> #!/usr/bin/perl
> use strict;
> $|=1;
> {
>   use Tk;
>   use Tk::Tree;
>   
>   my $mw = MainWindow->new;
>   
>   *Tk::Widget::DESTROY = sub {
>     my $w = shift;
>     print "DESTROYING $w\n";
>     $w->destroy if ($w->IsWidget);
>   };
>   
>   {
>     for (1..3) {
>       print "===================================\n";
>       print "RUN $_\n";
>       print "===================================\n";
>       my $d=$mw->DialogBox(-title=> "test",
> 			   -buttons=> ["OK", "Cancel"]);
>       # only the Cancel button will get destroyed 
>    
>       my $edit1 = $d->HList(); # will get destroyed
>       my $edit2 = $d->Tree();  # won't get destroyed
>       $d->destroy;
>       # will destroy only Tk::Button a Tk::HList
>       sleep 0.1;
>     }
>   }  
>   #  MainLoop;
> }
>
> END {
>   print "===================================\n";
>   print "STARTING GLOBAL DESTRUCTION\n";
>   print "===================================\n";
>   # will destroy everything else
> }
>
> __END__
>
> Is there any way to prevent the leak? Thanks,
> -- Petr
> --++**==--++**==--++**==--++**==--++**==--++**==--++**==
> ptk mailing list
> [email protected]
> https://mailman.stanford.edu/mailman/listinfo/ptk
>
>
>   

--++**==--++**==--++**==--++**==--++**==--++**==--++**==
ptk mailing list
[email protected]
https://mailman.stanford.edu/mailman/listinfo/ptk