Recent

Author Topic: FPC compiler issue using -Miso mode  (Read 3513 times)

samiam95124

  • New Member
  • *
  • Posts: 12
FPC compiler issue using -Miso mode
« on: January 03, 2018, 12:03:11 am »
Hi,

Believe I have discovered a compiler issue with FPC 3.0.4. This program illustrates it:

program test(output);

label 99;

type byte = 0..255;

var f: file of byte;
    b: byte;
    i: integer;

begin

   rewrite(f);
   for b := 1 to 10 do write(f, b);
   reset(f);
   for i := 1 to 10 do begin

      if eof(f) then begin

         writeln('End of file');
         goto 99

      end;
      read(f, b);
      write(b:1, ' ')

   end;
   99:

end.

C:\scratch>fpc -Miso test.pas
Free Pascal Compiler version 3.0.4 [2017/10/06] for i386
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling test.pas
Linking test.exe
30 lines compiled, 0.1 sec, 29712 bytes code, 1300 bytes data

C:\scratch>test
1 2 3 4 5 6 7 8 9 End of file

IE, it reads 9 values from the file and then indicates EOF even though the file is not, in fact at EOF. In fact, if you comment out the EOF test in the code it works fine, so the EOF indication is apparently false.

I suspect this is an issue with file buffer handling (Lazy I/O).

I'd be interested in hearing about a workaround, this is stopping the port of P5 to FPC.

Thanks!!

Scott Franco

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11383
  • FPC developer.
Re: FPC compiler issue using -Miso mode
« Reply #1 on: January 03, 2018, 12:25:48 am »
The file is ten bytes 1 to 10 (see %temp% directory), so that is alright I guess. Which makes it a problem in the reading, not writing, or some buffer sanitation problem.

C:\Users\marco\AppData\Local\Temp>hexdump -C fpc_121ADB35.tmp
00000000  01 02 03 04 05 06 07 08  09 0a                    |..........|
0000000a

added later: on rereading, you already seem to imply that it is the read ahead. But at least it is certain now. And I tested trunk too, same problem
« Last Edit: January 03, 2018, 12:27:50 am by marcov »

rvk

  • Hero Member
  • *****
  • Posts: 6112
Re: FPC compiler issue using -Miso mode
« Reply #2 on: January 03, 2018, 12:30:13 am »
Ieks, labels and goto  %) :'(

Where is the closing of the file?
Or is that not needed?
(I'm not that familiar with the iso mode)

Edit: ah, I see you both concluded it must be in the reading so closing should matter I guess.
« Last Edit: January 03, 2018, 12:41:07 am by rvk »

samiam95124

  • New Member
  • *
  • Posts: 12
Re: FPC compiler issue using -Miso mode
« Reply #3 on: January 03, 2018, 01:58:50 am »
Marcov,

Correct. I dumped the temp file as well and got the same result.

Scott Franco

samiam95124

  • New Member
  • *
  • Posts: 12
Re: FPC compiler issue using -Miso mode
« Reply #4 on: January 03, 2018, 02:01:52 am »
Rvk,

There is no "close" in ISO 7185 mode. The (all) open files are presumed to be closed on program exit, which of course they are in modern operating systems, even if the language does not support that, the OS closes the files on program exit.

The drawback being of course that there is no way to reuse a file, but ISO 7185 has no method for associating to a named file so the point is moot in any case.

samiam95124

  • New Member
  • *
  • Posts: 12
Re: FPC compiler issue using -Miso mode
« Reply #5 on: January 03, 2018, 03:19:51 am »
So I see FPC has a bug tracker, and I filed a bug report for it:

0032938

Thanks!

Scott Franco

 

TinyPortal © 2005-2018