readonly icon indicating copy to clipboard operation
readonly copied to clipboard

t/general/reassign.t fails with threaded perls

Open eserte opened this issue 11 years ago • 1 comments

See subject. Analysis done with http://analysis.cpantesters.org/solved?distv=Readonly-1.60 There are passes only with threaded perl 5.20.0.

eserte avatar Jun 28 '14 06:06 eserte

Exposed by a test regression but the problem may be Internals::SvREADONLY($) not seeing normal constants (strings, numbers, etc) as read only on some builds of perl. Hadn't even tracked it to threaded vs non-threaded perl until now though. Thanks!

For my own future reference: historically Readonly croaks with its own error message ("Attempt to reassign a readonly scalar") if an attempt is made to do something like:

 Readonly::Scalar "hello" => "goodbye"; # These are the actual failing tests
 Readonly::Scalar1 6 => 13;

On some builds of perl, Readonly doesn't catch those and (before locking the var) goes ahead and tries to do things similar to...

  "hello" = "goodbye";
   6 = 13;

...which will obviously fail ("Can't modify constant item in scalar assignment" or "Modification of a read-only value attempted"). I've reverted the offending tests back to their less stringent versions (tagged and PAUSE'd as 1.61) but a weakened test suite is never a good thing so I won't mark this as resolved just yet.

[edited for clarity]

sanko avatar Jun 28 '14 12:06 sanko