From: dpvc v. a. <we...@ma...> - 2007-09-08 21:53:17
|
Log Message: ----------- Make copies of the components rather than just copying the pointers. Modified Files: -------------- pg/lib/Parser: Constant.pm Revision Data ------------- Index: Constant.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Parser/Constant.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -Llib/Parser/Constant.pm -Llib/Parser/Constant.pm -u -r1.13 -r1.14 --- lib/Parser/Constant.pm +++ lib/Parser/Constant.pm @@ -36,15 +36,16 @@ my $self = shift; my $context = $self->context; my $data = $self->{def}{value}; if (Value::isFormula($data)) { + $data = $data->copy; $data->{values} = $self->{equation}{values}; - my $value = $data->{tree}->eval; - $data->{values} = {}; - return $value->inContext($self->context); + $data = $data->{tree}->eval->inContext($context); + return $data; } elsif (ref($data) eq 'ARRAY') { - foreach my $x (@{$data}) {$x->inContext($context)} + $data = [@${data}]; + foreach my $x (@{$data}) {$x = $x->copy->inContext($context)} return @{$data}; } else { - $data = $data->inContext($context) if Value::isValue($data); + $data = $data->copy->inContext($context) if Value::isValue($data); return $data; } } |