Andrea Mauri via fpc-devel
2021-04-08 08:36:47 UTC
Dear all,
TStreamReader.ReadLine seems to fail under specific circumstances.
I created a test to easily reproduce the problem.
The test makes use of a TStream that behaves in a weird, but formally
correct way. I created it based on a real experience with the StdIn that I
was able to reproduce thanks to pre-existing logging.
I suggest you use the test on Windows otherwise I'm not sure you'll be able
to reproduce the problem.
I believe the bug can be fixed by updating VPByte right after FillBuffer is
called:
[...]
FillBuffer;
VPByte := @FBuffer[FBufferPosition]; //bugfix
VPosition := FBufferPosition;
[...]
Tested with Lazarus 2.0.10 FPC 3.2.0 on Win64
Posted on lazarus forum at:
https://forum.lazarus.freepascal.org/index.php?topic=54033.msg400820#msg400820
Is it a bug or am I missing something?
Kind regards,
Andrea
TStreamReader.ReadLine seems to fail under specific circumstances.
I created a test to easily reproduce the problem.
The test makes use of a TStream that behaves in a weird, but formally
correct way. I created it based on a real experience with the StdIn that I
was able to reproduce thanks to pre-existing logging.
I suggest you use the test on Windows otherwise I'm not sure you'll be able
to reproduce the problem.
I believe the bug can be fixed by updating VPByte right after FillBuffer is
called:
[...]
FillBuffer;
VPByte := @FBuffer[FBufferPosition]; //bugfix
VPosition := FBufferPosition;
[...]
Tested with Lazarus 2.0.10 FPC 3.2.0 on Win64
Posted on lazarus forum at:
https://forum.lazarus.freepascal.org/index.php?topic=54033.msg400820#msg400820
Is it a bug or am I missing something?
Kind regards,
Andrea