ichecking for malloc failure - iomenu - interactive terminal-based selection menu Err bitreich.org 70 hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu bitreich.org 70 1Log /scm/iomenu/log.gph bitreich.org 70 1Files /scm/iomenu/files.gph bitreich.org 70 1Refs /scm/iomenu/refs.gph bitreich.org 70 1Tags /scm/iomenu/tag bitreich.org 70 1README /scm/iomenu/file/README.gph bitreich.org 70 1LICENSE /scm/iomenu/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 8be3cf653dc554954a4170bd057a33cf2e8a0244 /scm/iomenu/commit/8be3cf653dc554954a4170bd057a33cf2e8a0244.gph bitreich.org 70 1parent 3f19ac319ee4156f4728b5d496788b632281a9b2 /scm/iomenu/commit/3f19ac319ee4156f4728b5d496788b632281a9b2.gph bitreich.org 70 hAuthor: Josuah Demangeonā  ā µ URL:mailto:mail@josuah.net bitreich.org 70 iDate: Sat, 18 Mar 2017 00:07:17 +0100 Err bitreich.org 70 i Err bitreich.org 70 ichecking for malloc failure Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 2 +- Err bitreich.org 70 i M iomenu.c | 19 +++++++++++++------ Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 14 insertions(+), 7 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/iomenu/file/Makefile.gph bitreich.org 70 i@@ -1,4 +1,4 @@ Err bitreich.org 70 i-CFLAGS = -std=c99 -Wpedantic -Wall -Wextra -g -static Err bitreich.org 70 i+CFLAGS = -std=c99 -Wpedantic -Wall -Wextra -g -static -O0 Err bitreich.org 70 i OBJ = ${SRC:.c=.o} Err bitreich.org 70 i Err bitreich.org 70 i all: clean iomenu Err bitreich.org 70 1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70 i@@ -73,11 +73,13 @@ void Err bitreich.org 70 i read_lines(void) Err bitreich.org 70 i { Err bitreich.org 70 i extern struct line **linev; Err bitreich.org 70 i+ extern size_t linec, matching; Err bitreich.org 70 i Err bitreich.org 70 i char s[BUFSIZ]; Err bitreich.org 70 i size_t size = 1 << 4; Err bitreich.org 70 i Err bitreich.org 70 i- linev = malloc(sizeof(struct line *) * size); Err bitreich.org 70 i+ if (!(linev = malloc(sizeof(struct line *) * size))) Err bitreich.org 70 i+ die("malloc"); Err bitreich.org 70 i linev[0] = NULL; Err bitreich.org 70 i Err bitreich.org 70 i /* read the file into an array of lines */ Err bitreich.org 70 i@@ -95,10 +97,13 @@ read_lines(void) Err bitreich.org 70 i die("realloc"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- linev[linec] = malloc(sizeof(struct line)); Err bitreich.org 70 i- linev[linec]->match = 1; Err bitreich.org 70 i- linev[linec]->text = malloc(len); Err bitreich.org 70 i+ if (!(linev[linec] = malloc(sizeof(struct line)))) Err bitreich.org 70 i+ die("malloc"); Err bitreich.org 70 i+ if (!(linev[linec]->text = malloc(len))) Err bitreich.org 70 i+ die("malloc"); Err bitreich.org 70 i strcpy(linev[linec]->text, s); Err bitreich.org 70 i+ Err bitreich.org 70 i+ linev[linec]->match = 1; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -202,11 +207,13 @@ draw_column(size_t pos, size_t col, size_t cols) Err bitreich.org 70 i fputs(pos == current ? "\033[30;47m " : " ", stderr); Err bitreich.org 70 i Err bitreich.org 70 i for (size_t i = 0; col < cols ;) { Err bitreich.org 70 i- size_t len = mblen(linev[pos]->text + i, BUFSIZ - i); Err bitreich.org 70 i+ int len = mblen(linev[pos]->text + i, BUFSIZ - i); Err bitreich.org 70 i Err bitreich.org 70 i- if (len == 0) { Err bitreich.org 70 i+ if (len < 0) { Err bitreich.org 70 i i++; Err bitreich.org 70 i continue; Err bitreich.org 70 i+ } else if (len == 0) { Err bitreich.org 70 i+ break; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i col += linev[pos]->text[i] = '\t' ? pos + 1 % 8 : 1; Err bitreich.org 70 .