in reply to Re: Tie::File - sorting array adds empty lines
in thread Tie::File - sorting array adds empty lines

Thanks. Submitting bug report for Tie::File. (Upd: CPAN RT bug #39196 )

But the result appears to be an off-by-one in the module's implementation of the EXTEND.

It's not an off-by-one error, at least not on the module's behalf.
EXTEND is used to expand the internal buffer.
STORESIZE is used to actually change the visible size of the array.
Tie::File incorrectly treats EXTEND as STORESIZE.

  • Comment on Re^2: Tie::File - sorting array adds empty lines

Replies are listed 'Best First'.
Re^3: Tie::File - sorting array adds empty lines
by demerphq (Chancellor) on Jan 30, 2020 at 09:01 UTC

    I concur. There has been a long standing bug that the tied EXTEND method was being called with 1 more than it should have been called by the perl internals sub av_extend(). This was complemented by another bug where in pp_aassign() av_extend was being called with 1 less than it should have been, cancelling each other out in a practical sense for most use cases. Since most Tie modules implement EXTEND as a NO-OP this was not noticed. Once the two fencepost errors were removed this problem in Tie::File went away. I have pushed a fix which is currently being smoke tested, assuming that fix was correct I will merge it to blead, and we might see the fix included in Perl 5.32. I would like to apologize on behalf of the perl5porters community for not getting to the bottom of this earlier.

    See https://github.com/Perl/perl5/issues/17496 for details.

    ---
    $world=~s/war/peace/g