CGI::Application::Plugin::HTDot currently creates a circular reference,
by adding a reference back to the application object from the template
object, which is already referenced by the application object. 

The line of code is this:

 $t->param( c => $self ) if $var =~ /^c\./;

Is it correct that it should actually be this?

  use Scalar::Util 'weaken';
  $t->param( c => weaken($self) ) if $var =~ /^c\./;

The unpatched version once caused a problem for me because I depended on
CGI::Session's behavior of calling "flush()" automatically when that
object goes out of scope. 

Because of the circular reference, the object didn't go out of scope in
time, and the flush didn't happen. 

   Mark




#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to