<div class="gmail_quote">On Sat, Jun 2, 2012 at 7:22 PM, Reinier Olislagers <span dir="ltr"><<a href="mailto:reinierolislagers@gmail.com" target="_blank">reinierolislagers@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Windows<br>
Laz x86 bigide trunk r37483, FPC trunk r21457<br>
<br>
After compilation, when starting Laz I get an error message<br>
TButtonGlyphs.GlyphChanged: Max(1,0) gives a wrong result 0, should be 1.<br>
Attached log (both laz and fpc built with -g -gl)<br>
(Had built with fpcup; have deleted all .ppu, .o. .a from both fpc and<br>
laz directories then retried only building fpc, lazarus and bigide, so<br>
no useride)<br>
<br>
Is it me or should something be fixed?<br></blockquote></div><br>Yes it is you :)<br>No, in fact this is an "impossible" bug. As the error message says, Max function gives a wrong result! See :<br><br>#22164: Lazarus Startup Error:  Invalid floating point operation.<br>
 <a href="http://bugs.freepascal.org/view.php?id=22164">http://bugs.freepascal.org/view.php?id=22164</a><br>
<br>__ My test code looks like this: __<br>var<br>  numg1, numg2: integer;<br>...<br>  numg1:=1;<br>  if NumGlyphs > 1 then<br>    numg1 := NumGlyphs;<br>  numg2:=Max(1, NumGlyphs);<br>  if numg1 <> numg2 then<br>
    raise Exception.CreateFmt('TButtonGlyph.GlyphChanged: Max(1, %d) gives a wrong result %d, should be %d.',<br>                                [NumGlyphs, numg2, numg1]);<br><br><br>NumGlyphs is defined as a range:<br>
  TNumGlyphs = 1..5;<br><br>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 (?)<br>Who knows...<br>
Anyway Max() really, actually, returns a wrong value, no joking!<br><br>I cannot reproduce it. I have a 64-bit system and my FPC trunk is few weeks old.<br>I can test with the latest FPC trunk, too.<br><br><br>Juha<br><br>