From: Steve Peters <steve@fisharerojo.org>
Date: Sat, 8 Nov 2008 15:51:45 +0000 (+0000)
Subject: From change #34775, reverting perlio.c change for now.  Also,
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2376d97dd5675c65de55efc384814387b6c9a63f;p=p5sagit%2Fp5-mst-13.2.git

From change #34775, reverting perlio.c change for now.  Also,
setting the tests to TODO.
p4raw-link: @34775 on //depot/perl: 2556f95e0f4f5e8e95c9766374614ab52edefe3d

p4raw-id: //depot/perl@34778
---

diff --git a/ext/PerlIO/t/ioleaks.t b/ext/PerlIO/t/ioleaks.t
index 54b0ee1..ad76c39 100644
--- a/ext/PerlIO/t/ioleaks.t
+++ b/ext/PerlIO/t/ioleaks.t
@@ -10,14 +10,17 @@ use Test::More 'no_plan';
 # :perlio -> ok
 # :crlf   -> ok
 
-foreach my $layer(qw(:unix :stdio  :perlio :crlf)){
-	my $base_fd = do{ open my $in, '<', $0 or die $!; fileno $in };
+TODO: {
+    local $TODO = "[perl #56644] PerlIO resource leaks on open() and then :pop in :unix and :stdio";
+    foreach my $layer(qw(:unix :stdio  :perlio :crlf)){
+        my $base_fd = do{ open my $in, '<', $0 or die $!; fileno $in };
 
-	for(1 .. 3){
-		open my $fh, "<$layer", $0 or die $!;
+        for(1 .. 3){
+                open my $fh, "<$layer", $0 or die $!;
 
-		is fileno($fh), $base_fd, $layer;
-		binmode $fh, ':pop';
-	}
+                is fileno($fh), $base_fd, $layer;
+                binmode $fh, ':pop';
+        }
+    }
 }
 
diff --git a/perlio.c b/perlio.c
index 436bb85..a3ea344 100644
--- a/perlio.c
+++ b/perlio.c
@@ -2736,14 +2736,9 @@ PerlIOUnix_tell(pTHX_ PerlIO *f)
     return PerlLIO_lseek(PerlIOSelf(f, PerlIOUnix)->fd, 0, SEEK_CUR);
 }
 
-IV
-PerlIOUnix_close(pTHX_ PerlIO *f)
-{
-	return PerlIOBase_noop_ok(aTHX_ f);
-}
 
 IV
-PerlIOUnix_popped(pTHX_ PerlIO *f)
+PerlIOUnix_close(pTHX_ PerlIO *f)
 {
     dVAR;
     const int fd = PerlIOSelf(f, PerlIOUnix)->fd;
@@ -2777,7 +2772,7 @@ PERLIO_FUNCS_DECL(PerlIO_unix) = {
     sizeof(PerlIOUnix),
     PERLIO_K_RAW,
     PerlIOUnix_pushed,
-    PerlIOUnix_popped,
+    PerlIOBase_popped,
     PerlIOUnix_open,
     PerlIOBase_binmode,         /* binmode */
     NULL,
@@ -3127,12 +3122,6 @@ PerlIOStdio_invalidate_fileno(pTHX_ FILE *f)
 IV
 PerlIOStdio_close(pTHX_ PerlIO *f)
 {
-	return PerlIOBase_noop_ok(aTHX_ f);
-}
-
-IV
-PerlIOStdio_popped(pTHX_ PerlIO *f)
-{
     FILE * const stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
     if (!stdio) {
 	errno = EBADF;
@@ -3569,7 +3558,7 @@ PERLIO_FUNCS_DECL(PerlIO_stdio) = {
     sizeof(PerlIOStdio),
     PERLIO_K_BUFFERED|PERLIO_K_RAW,
     PerlIOStdio_pushed,
-    PerlIOStdio_popped,
+    PerlIOBase_popped,
     PerlIOStdio_open,
     PerlIOBase_binmode,         /* binmode */
     NULL,