commit 0d7822f8662747f2bb8a659469e39d545c388583
parent a3e46897430dd1037f280c8e650dfc08f0e4f822
Author: sin <sin@2f30.org>
Date: Tue, 16 Dec 2014 19:46:59 +0000
Don't free the line buffer for each file
There's no point free-ing memory when the kernel can do it for us.
Just reuse the already allocated memory to hold lines.
Thanks Truls Becken for pointing this out.
Diffstat:
M | cut.c | | | 20 | ++++---------------- |
1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/cut.c b/cut.c
@@ -74,18 +74,6 @@ parselist(char *str)
}
}
-static void
-freelist(void) {
- Range *l = list, *next;
-
- while (l) {
- next = l->next;
- free(l);
- l->next = NULL;
- l = next;
- }
-}
-
static size_t
seek(const char *s, size_t pos, size_t *prev, size_t count)
{
@@ -116,8 +104,10 @@ seek(const char *s, size_t pos, size_t *prev, size_t count)
static void
cut(FILE *fp)
{
- char *buf = NULL, *s;
- size_t size = 0, i, n, p;
+ static char *buf = NULL;
+ static size_t size = 0;
+ char *s;
+ size_t i, n, p;
ssize_t len;
Range *r;
@@ -143,7 +133,6 @@ cut(FILE *fp)
}
putchar('\n');
}
- free(buf);
}
int
@@ -190,6 +179,5 @@ main(int argc, char *argv[])
fclose(fp);
}
}
- freelist();
return 0;
}