From: dpvc v. a. <we...@ma...> - 2008-05-17 14:11:49
|
Log Message: ----------- Added error trapping so that large adaptive parameters will not cause errors. These situations are silently reported as incorrect (though potentially they COULD be correct, but that it unlikely). Modified Files: -------------- pg/macros: parserFormulaUpToConstant.pl Revision Data ------------- Index: parserFormulaUpToConstant.pl =================================================================== RCS file: /webwork/cvs/system/pg/macros/parserFormulaUpToConstant.pl,v retrieving revision 1.10 retrieving revision 1.11 diff -Lmacros/parserFormulaUpToConstant.pl -Lmacros/parserFormulaUpToConstant.pl -u -r1.10 -r1.11 --- macros/parserFormulaUpToConstant.pl +++ macros/parserFormulaUpToConstant.pl @@ -175,7 +175,10 @@ # # Compare with adaptive parameters to see if $l + n0 C = $r for some n0. # - return -1 unless $l->{adapt} == $r; + $main::_cmp_ = sub {return $l->{adapt} == $r}; # a closure to access local variables + my $equal = main::PG_restricted_eval('&$_cmp_'); # prevents errors with large adaptive parameters + delete $main::{_cmp_}; # remove temprary function + return -1 unless $equal; # # Check that n0 is non-zero (i.e., there is a multiple of C in the student answer) # (remember: return value of 0 is equal, and non-zero is unequal) |