summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/IO/lib/IO/File.pm8
-rwxr-xr-xlib/FileHandle.t4
2 files changed, 8 insertions, 4 deletions
diff --git a/ext/IO/lib/IO/File.pm b/ext/IO/lib/IO/File.pm
index d5520cbd93..9c4177a6a1 100644
--- a/ext/IO/lib/IO/File.pm
+++ b/ext/IO/lib/IO/File.pm
@@ -158,9 +158,11 @@ sub open {
defined $perms or $perms = 0666;
return sysopen($fh, $file, $mode, $perms);
}
- if (! File::Spec->file_name_is_absolute($file)) {
- $file = File::Spec->catfile(File::Spec->curdir(),$file);
- }
+ if (defined($file) && length($file)
+ && ! File::Spec->file_name_is_absolute($file))
+ {
+ $file = File::Spec->catfile(File::Spec->curdir(),$file);
+ }
$file = IO::Handle::_open_mode_string($mode) . " $file\0";
}
open($fh, $file);
diff --git a/lib/FileHandle.t b/lib/FileHandle.t
index c994c8b448..ddbd94474e 100755
--- a/lib/FileHandle.t
+++ b/lib/FileHandle.t
@@ -22,7 +22,7 @@ autoflush STDOUT 1;
$mystdout = new_from_fd FileHandle 1,"w";
$| = 1;
autoflush $mystdout;
-print "1..11\n";
+print "1..12\n";
print $mystdout "ok ".fileno($mystdout)."\n";
@@ -93,3 +93,5 @@ else {
exit(0);
}
}
+
+print FileHandle->new('','r') ? "not ok 12\n" : "ok 12\n";