summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2011-09-30 20:19:44 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2011-09-30 20:19:44 -0700
commite259c7ec60a84280dbf7e2cf041a6fec79f53e1f (patch)
treeb0f908a9f23fa54a6a4a55bef2c731d4992c9362
parentfcb83e31a0dfd85e4ec105dd656ed405e64c387b (diff)
downloadxscope-e259c7ec60a84280dbf7e2cf041a6fec79f53e1f.tar.gz
Make FDinfo dynamically allocated
We still allocate one fdinfo struct for every possible FD up front instead of resizing as needed, but they're much smaller now that we just have a pointer to the 32k buffer instead of including it directly in the fdinfo. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r--fd.c4
-rw-r--r--scope.c2
-rw-r--r--scope.h2
3 files changed, 6 insertions, 2 deletions
diff --git a/fd.c b/fd.c
index 50c6f17..9bff364 100644
--- a/fd.c
+++ b/fd.c
@@ -109,6 +109,10 @@ InitializeFD(void)
if (FDD == NULL) {
panic("Can't allocate memory for file descriptor table");
}
+ FDinfo = calloc(MaxFD, sizeof (struct fdinfo));
+ if (FDD == NULL) {
+ panic("Can't allocate memory for file descriptor info table");
+ }
/* be sure all fd's are closed and marked not busy */
for (i = 0; i < MaxFD; i++)
diff --git a/scope.c b/scope.c
index 686be80..f66def2 100644
--- a/scope.c
+++ b/scope.c
@@ -933,7 +933,7 @@ SetUpStdin (void)
*/
static long clientNumber = 0;
-struct fdinfo FDinfo[StaticMaxFD];
+struct fdinfo *FDinfo;
void
SetUpPair(
diff --git a/scope.h b/scope.h
index 360cdc5..d14cfed 100644
--- a/scope.h
+++ b/scope.h
@@ -117,7 +117,7 @@ struct fdinfo
Boolean writeblocked;
};
-extern struct fdinfo FDinfo[StaticMaxFD];
+extern struct fdinfo *FDinfo;
extern int littleEndian;
extern char HandleSIGUSR1;
extern char Leader[];