summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dmenu.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/dmenu.c b/dmenu.c
index 721ec45..5e4fe3e 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -557,7 +557,7 @@ static void
readstdin(void)
{
char *line = NULL;
- size_t i, junk, itemsiz = 0;
+ size_t i, itemsiz = 0, linesiz = 0;
ssize_t len;
if(passwd){
inputw = lines = 0;
@@ -565,7 +565,7 @@ readstdin(void)
}
/* read each line from stdin and add it to the item list */
- for (i = 0; (len = getline(&line, &junk, stdin)) != -1; i++) {
+ for (i = 0; (len = getline(&line, &linesiz, stdin)) != -1; i++) {
if (i + 1 >= itemsiz) {
itemsiz += 256;
if (!(items = realloc(items, itemsiz * sizeof(*items))))
@@ -573,9 +573,10 @@ readstdin(void)
}
if (line[len - 1] == '\n')
line[len - 1] = '\0';
- items[i].text = line;
+ if (!(items[i].text = strdup(line)))
+ die("strdup:");
+
items[i].out = 0;
- line = NULL; /* next call of getline() allocates a new line */
}
free(line);
if (items)