On Thu, 1 Jan 2009, Paul Ishenin wrote:
> Michael Van Canneyt wrote: > > > While finding the bug #12897 I found that a memory stream position could > > > be set to before the start of the file without giving an error, and > > > subsequent reads would appear to work (unless the position was so far > > > off an invalid region of memory was read). I found the precise problem > > > by patching TCustomMemoryStream to raise an exception if the position is > > > set before the start of the file. Should an exception be raised in this > > > circumstance, which would make finding bugs easier? Or should the > > > position just be set to 0, which would be more consistent with the > > > behaviour when going beyond the end of the stream? > > > > > > > I think that an exception is better. If you set the position to a > > non-existing > > position, there is an error in your logic anyway. > > > Just tested with delphi > > procedure TForm1.Button1Click(Sender: TObject); > var > S: TMemoryStream; > begin > S := TMemoryStream.Create; > S.Position := 10; > ShowMessage(IntToStr(S.Position)); > S.Position := -1; > ShowMessage(IntToStr(S.Position)); > S.Free; > end; > > It shows 10 and -1. > > If you do an exception or silent change of position it can cause > incompatibilities. Maybe read operation must be fixed to ignore positions out > of the range 0..Size -1? What does Delphi do in such a case ? Michael. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel