RT 43789: "in memory" files don't call STORE
authorDavid Mitchell <davem@iabyn.com>
Wed, 5 May 2010 21:39:24 +0000 (22:39 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 5 May 2010 21:39:24 +0000 (22:39 +0100)
commitffe0bb5ab7ece4bcdcb968ad795cd58d265b845b
tree15cde1cd73b7593933ef4b3186fc3c65344b3b1c
parent994d373a075399b04d509cb2732e0a956c88e014
RT 43789: "in memory" files don't call STORE

The code in PerlIO-scalar that implements the open $fh, '>' \$buffer
feature did not, apart from accidentally, support get/set magic and thus
tied buffers. This patch remedies that: mostly by just blindly sprinkling
SvGETMAGIC/SvSETMAGIC about, rather than doing any deep analysis and
understanding of the code. One main change I did was to add a
PerlIOScalar_read() function, rather than rely on the default behaviour
(which implements it in terms of PerlIOScalar_get_ptr() etc), since that
approach had a tendency to call FETCH multiple times
ext/PerlIO-scalar/scalar.xs
ext/PerlIO-scalar/t/scalar.t