Introduction
Introduction Statistics Contact Development Disclaimer Help
readstdin: allocate amount of items - dmenu - dynamic menu
git clone git://git.suckless.org/dmenu
Log
Files
Refs
README
LICENSE
---
commit ba1a347dcaba055f824161007dfee60db3ea785b
parent bcbc1ef5c4cf4875a4d66e7dc0919da88a6096a5
Author: Hiltjo Posthuma <[email protected]>
Date: Mon, 31 Oct 2022 11:52:30 +0100
readstdin: allocate amount of items
Keep track of the amount of items (not a total buffer size), allocate an array …
new items. For now change BUFSIZ bytes to 256 * sizeof(struct item)).
Diffstat:
M dmenu.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/dmenu.c b/dmenu.c
@@ -550,14 +550,16 @@ static void
readstdin(void)
{
char *line = NULL;
- size_t i, junk, size = 0;
+ size_t i, junk, itemsiz = 0;
ssize_t len;
/* read each line from stdin and add it to the item list */
for (i = 0; (len = getline(&line, &junk, stdin)) != -1; i++) {
- if (i + 1 >= size / sizeof *items)
- if (!(items = realloc(items, (size += BUFSIZ))))
- die("cannot realloc %zu bytes:", size);
+ if (i + 1 >= itemsiz) {
+ itemsiz += 256;
+ if (!(items = realloc(items, itemsiz * sizeof(*items))…
+ die("cannot realloc %zu bytes:", itemsiz * siz…
+ }
if (line[len - 1] == '\n')
line[len - 1] = '\0';
items[i].text = line;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.