Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 7731dc3c70b99105f6680e0e6d3f6f3242fda941
      
https://github.com/Perl/perl5/commit/7731dc3c70b99105f6680e0e6d3f6f3242fda941
  Author: David Mitchell <[email protected]>
  Date:   2021-09-10 (Fri, 10 Sep 2021)

  Changed paths:
    M ext/XS-APItest/APItest.xs

  Log Message:
  -----------
  APItest.xs: remove unneeded SvPV_force_nolen()

The two API test wrappers utf16_to_utf8_reversed() and
utf8_to_utf16(_reversed() included a call to SvPV_force_nolen(), because
the underlying functions in utf8.c which they were wrapping used to
modify the src buffer.

However since v5.35.2-236-g5fd26678bf, these functions no longer modify
the buffer, so the force is superfluous. So this commit removes force.

As a side-effect, this fixes a failure in

    cd t; ./TEST -deparse ../ext/XS-APItest/t/utf16_to_utf8.t

because the test file has this line:

    $utf16_of_U10302 = utf8_to_utf16_reversed(chr 0x10302);

which after a round trip through deparse becomes:

    $utf16_of_U10302 = utf8_to_utf16_reversed("\x{10302}");

and it so happens that at compile time, the chr() form gets constant-
folded into a modifiable PADTMP string constant, which survives a call
to  SvPV_force(), while the latter form is a pure read-only constant SV
which croaks with "Modification of a read-only value attempted"


Reply via email to