[Lazarus] Error running Lazarus

Juha Manninen juha.manninen62 at gmail.com
Sat Jun 2 20:21:33 CEST 2012


On Sat, Jun 2, 2012 at 7:22 PM, Reinier Olislagers <
reinierolislagers at gmail.com> wrote:

> Windows
> Laz x86 bigide trunk r37483, FPC trunk r21457
>
> After compilation, when starting Laz I get an error message
> TButtonGlyphs.GlyphChanged: Max(1,0) gives a wrong result 0, should be 1.
> Attached log (both laz and fpc built with -g -gl)
> (Had built with fpcup; have deleted all .ppu, .o. .a from both fpc and
> laz directories then retried only building fpc, lazarus and bigide, so
> no useride)
>
> Is it me or should something be fixed?
>

Yes it is you :)
No, in fact this is an "impossible" bug. As the error message says, Max
function gives a wrong result! See :

#22164: Lazarus Startup Error: Invalid floating point operation.
 http://bugs.freepascal.org/view.php?id=22164

__ My test code looks like this: __
var
  numg1, numg2: integer;
...
  numg1:=1;
  if NumGlyphs > 1 then
    numg1 := NumGlyphs;
  numg2:=Max(1, NumGlyphs);
  if numg1 <> numg2 then
    raise Exception.CreateFmt('TButtonGlyph.GlyphChanged: Max(1, %d) gives
a wrong result %d, should be %d.',
                                [NumGlyphs, numg2, numg1]);


NumGlyphs is defined as a range:
  TNumGlyphs = 1..5;

One possible explanation is that the latest compiler has a bug with ranges,
maybe calling a wrong overloaded version of Max. Maybe it calls the float
version and makes a rounding error (?)
Who knows...
Anyway Max() really, actually, returns a wrong value, no joking!

I cannot reproduce it. I have a 64-bit system and my FPC trunk is few weeks
old.
I can test with the latest FPC trunk, too.


Juha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120602/7fc9a2f4/attachment-0003.html>


More information about the Lazarus mailing list