Tony Cook writes:
The most interesting changes this month were probably:
- 116190 - making -F imply -a and -a imply -n.
- 116989 - S_croak_memory_wrap
- 117265 - safesyscalls
- 74798 - Data::Dumper XS
[perl #116190] The original request in this ticket was that -F without -a should warn or fail with an error. The problem with that, as discussed, is that there's a perfectly reasonable thing to do instead: have -F switch on -a, and Aristotle Pagaltzis produced a patch to do just that.
The OP then suggested that -a should then imply -n, which is where it sat for 5 months. I added changes to improve the portability of the new test, to make -a imply -n and to avoid a warnings test from blocking on STDIN.
[perl #116989] The story of this ticket starts in October last year when a space optimization was added for the Perl_croak_nocontext() call generated by the MEM_WRAP_CHECK() macro.
In February this year this change was found to be the cause of probe failures: compiler flag checks done by ccflags.SH in perl and library checks by Time-HiRes.
In March, S_croak_memory_wrap() was changed into an exported API function instead of a static function, with the hope that this would fix the problem (but it turned out it didn't.)
By the time we realized that, we were in the lead up to 5.18, and so while a real fix for the issue was added by Nicholas in April, the reinstatement of the original S_croak_memory_wrap() was left until 5.19.
This finally happened in d1decf2b.
[perl #117265] This patch fixes a long standing bug in perl, where the string supplied to open() and other functions dealing with the filesystem would simply ignore any characters after an embedded NUL in a filename.
Reini Urban provided a patch to fix that, but the original behaviour was a bit extreme, croaking when warnings were enabled.
A second version of the patch didn't croak, but did treat the warning as a severe warning, which are always enabled. It also behaved incorrectly for functions taking multiple filenames, such as unlink(), ignoring any filename after the first name containing NUL but returning them as successful operations. eg. unlink "foo\0bar", "idontexist" would return 1 without attempting to remove "idontexist'.
I ended up largely rewriting the patch to correct those problems.
[perl #74798] Slaven Rezic supplied a patch to add an XS implementation of Data::Dumper's Useqq mode. His final patch largely worked, but handled some character sequences incorrectly ("\0011" because "\11").
I added tests and fix for that, and applied it as 2780a6ed.
Of course this being Data::Dumper, a change in the code broke some tests on CPAN, in one case a tweak (059639d5c with a threads fix in 1f55bb435) to the output format to match the pure perl code exactly fixed the problem, unfortunately in the other case, the module was directly fiddling with Data::Dumper's internals, which couldn't be fixed.