URI: 
       check all mem allocations - gramscii - A simple editor for ASCII box-and-arrow charts
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit e4c527b0f07b91fb3cd9ba58ba057dfea9da9356
   DIR parent a6f10d6541be679b0ca328ba85fa44d2935937cd
  HTML Author: KatolaZ <katolaz@freaknet.org>
       Date:   Fri,  9 Aug 2019 09:20:53 +0100
       
       check all mem allocations
       
       Diffstat:
         M draw.c                              |      12 +++++++++++-
         M lineset.c                           |      10 +++++-----
         M screen.c                            |       2 +-
       
       3 files changed, 17 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/draw.c b/draw.c
       @@ -221,11 +221,16 @@ void get_arrow(FILE *fc){
                char c;
                int orig_x=x, orig_y=y, arrow_len;
                static short  *arrow = NULL;
       +        short *tmp = NULL;
                static int arrow_sz;
        
                if (!arrow){
                        arrow_sz = 100;
                        arrow = malloc(arrow_sz * sizeof(short));
       +                if (arrow == NULL){
       +                        fprintf(stderr, "Unable to allocate arrow");
       +                        cleanup(1);
       +                }
                }
                arrow_len = 0;
                dir = DIR_N;
       @@ -242,7 +247,12 @@ void get_arrow(FILE *fc){
                        /* FIXME: if we are out of bound, do nothing? */
                        if (arrow_len == arrow_sz){
                                arrow_sz *=2;
       -                        arrow = realloc(arrow, arrow_sz * sizeof(short));
       +                        tmp = realloc(arrow, arrow_sz * sizeof(short));
       +                        if (tmp == NULL){
       +                                fprintf(stderr, "Unable to reallocate arrow");
       +                                cleanup(1);
       +                        }
       +                        arrow = tmp;
                        }
                        if (dir != DIR_N){
                                arrow[arrow_len++] = dir;
   DIR diff --git a/lineset.c b/lineset.c
       @@ -12,9 +12,9 @@ void ensure_line_length(line_t *l, int len){
        
                if (l->sz < len + 1){
                        tmp = realloc(l->s, (len+1) * 2 * sizeof(char));
       -                if (!tmp){
       +                if (tmp == NULL){
                                fprintf(stderr, "Unable to allocate string\n");
       -                        cleanup(-1);
       +                        cleanup(1);
                        }
                        l->s = tmp;
                        l->sz = (len + 1) * 2;
       @@ -29,7 +29,7 @@ void alloc_line(line_t *l){
                tmp = malloc((l->sz) * sizeof(char));
                if (tmp == NULL){
                        fprintf(stderr, "unable to allocate line\n");
       -                cleanup(-1);
       +                cleanup(1);
                }
                l->s = tmp;
                memset(l->s, BG, l->sz);
       @@ -46,7 +46,7 @@ void ensure_num_lines(lineset_t *ls, int n){
                        tmp = realloc(ls->l, (n + LONG_STEP) * sizeof(line_t));
                        if (tmp == NULL){
                                fprintf(stderr, "Unable to allocate memory for more lines");
       -                        cleanup(-1);
       +                        cleanup(1);
                        }
                        else {
                                ls->l = tmp;
       @@ -147,7 +147,7 @@ void copy_lines_to_ring(int y1, int y2, int which){
                        tmp = realloc(undo, (undo_sz + 10) * sizeof(lineset_t));
                        if (tmp == NULL){
                                fprintf(stderr, "Error allocating undo buffer");
       -                        cleanup(-1);
       +                        cleanup(1);
                        }
                        undo = tmp;
                        for (i=0; i<10; i++){
   DIR diff --git a/screen.c b/screen.c
       @@ -422,7 +422,7 @@ void init_screen(){
                screen.num = HEIGHT;
                if (screen.l == NULL){
                        perror("allocating screen");
       -                cleanup(-1);
       +                cleanup(1);
                }
                for (i=0; i<HEIGHT; i++){
                        alloc_line(&(screen.l[i]));