* dtable.h (dtable::first_fd_for_open): Change declaration to size_t.

(dtable::extend): Change parameter to size_t.
(dtable::find_unused_handle): Ditto.
* dtable.cc: Remove now-unused header.
(dtable::extend): Remove pointless test.  Change parameter to size_t.
(dtable::find_unused_handle): Rework to avoid MAX calculation in extend() call.
Change parameter to size_t.
This commit is contained in:
Christopher Faylor 2013-12-01 02:52:54 +00:00
parent 483c843a6a
commit 499494d2cc
3 changed files with 18 additions and 10 deletions

View File

@ -1,3 +1,13 @@
2013-11-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.h (dtable::first_fd_for_open): Change declaration to size_t.
(dtable::extend): Change parameter to size_t.
(dtable::find_unused_handle): Ditto.
* dtable.cc: Remove now-unused header.
(dtable::extend): Remove pointless test. Change parameter to size_t.
(dtable::find_unused_handle): Rework to avoid MAX calculation in
extend() call. Change parameter to size_t.
2013-11-30 Christopher Faylor <me.cygwin2013@cgf.cx> 2013-11-30 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.cc (build_fh_pc): When creating an archetype, use native name * dtable.cc (build_fh_pc): When creating an archetype, use native name

View File

@ -16,7 +16,6 @@ details. */
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include <wchar.h> #include <wchar.h>
#include <sys/param.h>
#define USE_SYS_TYPES_FD_SET #define USE_SYS_TYPES_FD_SET
#include <winsock.h> #include <winsock.h>
@ -73,14 +72,11 @@ set_std_handle (int fd)
} }
int int
dtable::extend (int howmuch) dtable::extend (size_t howmuch)
{ {
int new_size = size + howmuch; int new_size = size + howmuch;
fhandler_base **newfds; fhandler_base **newfds;
if (howmuch <= 0)
return 0;
if (new_size > OPEN_MAX_MAX) if (new_size > OPEN_MAX_MAX)
{ {
set_errno (EMFILE); set_errno (EMFILE);
@ -225,8 +221,10 @@ dtable::delete_archetype (fhandler_base *fh)
} }
int int
dtable::find_unused_handle (int start) dtable::find_unused_handle (size_t start)
{ {
size_t extendby = (start > size) ? start - size : NOFILE_INCR;
/* This do loop should only ever execute twice. */
do do
{ {
for (size_t i = start; i < size; i++) for (size_t i = start; i < size; i++)
@ -234,7 +232,7 @@ dtable::find_unused_handle (int start)
if (fds[i] == NULL) if (fds[i] == NULL)
return i; return i;
} }
while (extend (MAX (NOFILE_INCR, start - size))); while (extend (extendby));
return -1; return -1;
} }

View File

@ -32,7 +32,7 @@ class dtable
unsigned narchetypes; unsigned narchetypes;
unsigned farchetype; unsigned farchetype;
static const int initial_archetype_size = 8; static const int initial_archetype_size = 8;
int first_fd_for_open; size_t first_fd_for_open;
int cnt_need_fixup_before; int cnt_need_fixup_before;
void lock () {lock_process::locker.acquire ();} void lock () {lock_process::locker.acquire ();}
void unlock () {lock_process::locker.release ();} void unlock () {lock_process::locker.release ();}
@ -54,7 +54,7 @@ public:
void vfork_parent_restore (); void vfork_parent_restore ();
void vfork_child_fixup (); void vfork_child_fixup ();
fhandler_base *dup_worker (fhandler_base *oldfh, int flags); fhandler_base *dup_worker (fhandler_base *oldfh, int flags);
int extend (int howmuch); int extend (size_t howmuch);
void fixup_after_fork (HANDLE); void fixup_after_fork (HANDLE);
void fixup_close (size_t, fhandler_base *); void fixup_close (size_t, fhandler_base *);
@ -65,7 +65,7 @@ public:
unlock (); unlock ();
return res; return res;
} }
int find_unused_handle (int start); int find_unused_handle (size_t start);
int find_unused_handle () { return find_unused_handle (first_fd_for_open);} int find_unused_handle () { return find_unused_handle (first_fd_for_open);}
void __reg2 release (int fd); void __reg2 release (int fd);
void init_std_file_from_handle (int fd, HANDLE handle); void init_std_file_from_handle (int fd, HANDLE handle);