Fix change 27059 so that it actually works with >16 file descriptors.
Nicholas Clark [Sun, 12 Feb 2006 19:03:47 +0000 (19:03 +0000)]
With programmers like these, we need Stadler & Waldorf on code review.

p4raw-id: //depot/perl@27166

perlio.c

index fa993ec..30a40cb 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -2249,7 +2249,7 @@ perl_mutex PerlIO_mutex;
 static void
 S_more_refcounted_fds(pTHX_ const int new_fd) {
     const int old_max = PL_perlio_fd_refcnt_size;
-    const int new_max = 16 + (new_fd & 15);
+    const int new_max = 16 + (new_fd & ~15);
     int *new_array;
 
     PerlIO_debug("More fds - old=%d, need %d, new=%d\n",
@@ -2259,6 +2259,8 @@ S_more_refcounted_fds(pTHX_ const int new_fd) {
        return;
     }
 
+    assert (new_max > new_fd);
+
     new_array
        = PerlMemShared_realloc(PL_perlio_fd_refcnt, new_max * sizeof(int));