Introduction
Introduction Statistics Contact Development Disclaimer Help
check all mem allocations - gramscii - A simple editor for ASCII box-and-arrow …
Log
Files
Refs
Tags
README
LICENSE
---
commit e4c527b0f07b91fb3cd9ba58ba057dfea9da9356
parent a6f10d6541be679b0ca328ba85fa44d2935937cd
Author: KatolaZ <[email protected]>
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(-)
---
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;
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 li…
- 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++){
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]));
You are viewing proxied material from bitreich.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.