EDivByZero вместо EOverflow на linux

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

EDivByZero вместо EOverflow на linux

Сообщение Kitayets »

на linux (в данном случае ubuntu 20.04) freepascal (в данном случае 3.0.4+dfsg-23) на простейшей программе бросает не то исключение :(

минимальная программа:

Код: Выделить всё

program float_overflow;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
var
  z: single = 0.0;
  b: single = 1.0e30;
  c: single = 1.0e30;
begin
  z:= b*c;
  writeln(z);
  readln;
end.


на ubuntu вот такое:

Код: Выделить всё

yr@E525:~/ME/projects/lazarus/test1$ ./float_overflow
An unhandled exception occurred at $000000000040109B:
EDivByZero: Division by zero
  $000000000040109B


на виндовс 10 x64 (fpc 3.2) все как в аптеке:

Код: Выделить всё

E:\tmp\pas_tests>float_overflow.exe
An unhandled exception occurred at $00000001000016DA:
EOverflow: Floating point overflow
  $00000001000016DA  main,  line 16 of float_overflow.lpr


почему так?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Kitayets писал(а):почему так?

Тонкий намёк на смену версии компилятора в сторону более новой... ;-)
Ответить