On Wed, 22 Feb 2017 15:09:44 -0800, c...@zoffix.com wrote:
> If .seek(... SeekFromCurrent) is called after a call to .readchars,
> the position sought to appears to be way off target:
> 
> 22:54       IOninja m: "/tmp/Foo.pm6".IO.spurt: "I love you so very
> much"; with "/tmp/Foo.pm6".IO.open { .read(2); .seek: 1,
> SeekFromCurrent; .tell.say }
> 22:54       camelia rakudo-moar 5ec251: OUTPUT: «3␤»
> 22:55       IOninja m: "/tmp/Foo.pm6".IO.spurt: "I love you so very
> much"; with "/tmp/Foo.pm6".IO.open { .readchars(2); .seek: 1,
> SeekFromCurrent; .tell.say }
> 22:55       camelia rakudo-moar 5ec251: OUTPUT: «24␤»
> 22:55       IOninja looks .readchars messes up the current position as
> far as seekage is concerned (it's fine if you try to read more, for
> example)
> 
> After some discussion on IRC (https://irclog.perlgeek.de/perl6-
> dev/2017-02-22 ), one suggestion was that there's some sort of
> buffering involved:
> 
> 23:00               m: "/tmp/Foo.pm6".IO.spurt: "I love you\nso very
> much"; with "/tmp/Foo.pm6".IO.open { .readchars(2); .seek: 1,
> SeekFromCurrent; .tell.say }
> 23:00       camelia rakudo-moar 5ec251: OUTPUT: «24␤»
> 23:00       IOninja m: "/tmp/Foo.pm6".IO.spurt: "I love you\nso very
> much" x 100; with "/tmp/Foo.pm6".IO.open { .readchars(2); .seek: 1,
> SeekFromCurrent; .tell.say }
> 23:00       camelia rakudo-moar 5ec251: OUTPUT: «2301␤»
> 23:00       jnthn   Anyway, just sayin' that if it's off-by-one it's
> actually not lying :)
> 23:00       IOninja m: "/tmp/Foo.pm6".IO.spurt: "I love you\nso very
> much" x 10000; with "/tmp/Foo.pm6".IO.open { .readchars(2); .seek: 1,
> SeekFromCurrent; .tell.say }
> 23:00       camelia rakudo-moar 5ec251: OUTPUT: «32769␤»
> 23:00       IOninja m: "/tmp/Foo.pm6".IO.spurt: "I love you\nso very
> much" x 20000; with "/tmp/Foo.pm6".IO.open { .readchars(2); .seek: 1,
> SeekFromCurrent; .tell.say }
> 23:00       camelia rakudo-moar 5ec251: OUTPUT: «32769␤»
> 
> This behaviour is not present on JVM.

The fixes, and tests, made by Zoffix, when fixing 
https://rt.perl.org/Public/Bug/Display.html?id=131376
covers this bug as well.

Reply via email to