I recall a change quite a while ago to save-and-restore the value of errno around XS calls, presumably to reduce the noise of XS calls changing the value of $!, presumably unintentionally.
But despite Net::SSLeay's pretty poor pass/fail ratio on CPAN of late, it does pass tests sometimes. That throws into question my recollection of this feature. Or perhaps it is the case that fairly rarely $! is 0 by luck and the test passes. Or perhaps this feature was only added on some platforms (and Net::SSLeay fails tests on other platforms for other reasons, of course).
But I certainly don't think your jumping to the conclusion of blaming compiler differences is warranted. I would not expect compiler differences to break linking of the errno global (if linking together global symbols didn't work, then you'd have a ton more problems than errno). And I wouldn't expect compiler difference to cause a change in how Perl deals with errno in some other way, though I'm less certain of that.
Update: Re^2: errno in XS not propagating to $! - breaks Net::SSLeay describes how there being two different errno globals can actually happen here.
My next step would be to search for code related to XS handling that sets errno.
- tye
In reply to Re: errno in XS not propagating to $! - breaks Net::SSLeay (misblamed)
by tye
in thread errno in XS not propagating to $! - breaks Net::SSLeay
by nobull
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |