TFPExpessionParser does not raise an exception when dividing by zero.
Original Reporter info from Mantis: CM630
-
Reporter name: СМ630
Original Reporter info from Mantis: CM630
- Reporter name: СМ630
Description:
TFPExpessionParser does not raise an exception when dividing by zero.
This way crashed cannot be handled.
Additional information:
I have edited Procedure TFPDivideOperation.GetNodeValue(var Result : TFPExpressionResult);, now the problem seems fixed.
Procedure TFPDivideOperation.GetNodeValue(var Result : TFPExpressionResult);
Var
RRes : TFPExpressionResult;
begin
Left.GetNodeValue(Result);
Right.GetNodeValue(RRes);
case Result.ResultType of
rtInteger : if RRes.ResInteger <> 0 then Result.ResFloat:=Result.ResInteger/RRes.ResInteger else RaiseParserError(SErrDivisionByZero, [ResultTypeName(rtInteger)]);
rtFloat : if RRes.ResFloat <> 0 then Result.ResFloat:=Result.ResFloat/RRes.ResFloat else RaiseParserError(SErrDivisionByZero, [ResultTypeName(rtFloat)]);
rtCurrency :
if NodeType=rtCurrency then
if RRes.ResCurrency <> 0 then Result.ResCurrency:=Result.ResCurrency/RRes.ResCurrency else RaiseParserError(SErrDivisionByZero, [ResultTypeName(rtCurrency)])
else
Result.ResFloat:=Result.ResFloat/RRes.ResFloat else RaiseParserError(SErrDivisionByZero, [ResultTypeName(rtFloat)]);
end;
Result.ResultType:=NodeType;
end; `
Also
SErrDivisionByZero = 'Division by zero';
shall be added in Resourcestring.
Mantis conversion info:
- Mantis ID: 36839
- Version: 3.0.4
- Fixed in version: 3.3.1
- Fixed in revision: 45223 (#8182669e)
- Target version: 3.2.0