sub variable {
my $c = shift;
my $oldvarref = $c->{'-variable'};
my $oldval = $$oldvarref if $oldvarref;
if(@_) {
my $varref = shift;
if ($oldvarref)
{
$c->traceVdelete($oldvarref);
}
$c->{'-variable'} = $varref;
$c->traceVariable($varref, 'w', sub { $c->value($_[1]) });
$$varref = $oldval;
_layoutRequest($c,2);
}
$oldval;
}
<\code>
Here is the fix
sub variable {
my $c = shift;
my $oldvarref = "";
my $oldval = "";
if (defined($c->{'-variable'})) {
$oldvarref = $c->{'-variable'};
$oldval = $$oldvarref if $oldvarref;
}
if(@_) {
my $varref = shift;
$c->traceVdelete($oldvarref)
if (defined($oldvarref) and ($oldvarref ne ""));
$c->{'-variable'} = $varref;
$c->traceVariable($varref, 'w', sub { $c->value([1]) });
$$varref = $oldval if (defined($oldval) and ($oldval ne ""));
_layoutRequest($c,2);
}
return ($oldval) if (defined($oldval) and ($oldval ne ""));
}