At 09:53 PM 11/7/2001 +0100, Tels wrote:
>So, if I read Tim correctly, make that my $foo = $! + 0; and it might
>pass the test. Needs probably a bit more munging to print the $! in
>numeric context as well as $foo after a failure.
Thanks Tels and Tim. With the following additional change:
--- ext/POSIX/t/posix.t;-1 Tue Nov 6 13:33:28 2001
+++ ext/POSIX/t/posix.t Wed Nov 7 15:05:30 2001
@@ -166,10 +166,10 @@
# Autoloading requires many system calls.
# errno() looks at $! to generate its result.
# Autoloading should not munge the value.
- my $foo = $!;
+ my $foo = 0 + $!; # force numeric
my $errno = POSIX::errno();
print "not " unless $errno == $foo;
- print "ok ", 28 + $test, " # POSIX::errno(): $errno, \$!: $!\n";
+ print "ok ", 28 + $test, " # POSIX::errno(): $errno, \$!: $foo\n";
}
}
[end]
I get
not ok 28 # POSIX::errno(): 20, $!: 0
which I think means autoloading sets errno but isn't supposed to. I suspect
it's doing a -d somewhere and leaving an errno of ENOTDIR laying about. Hmm.