From 72c52012a32525bc27d82a9634d0bd3507ce46bd Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Wed, 9 Oct 2024 11:52:53 +0200 Subject: [PATCH] clean alloc checks --- bf.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bf.c b/bf.c index be16220..7069e04 100644 --- a/bf.c +++ b/bf.c @@ -19,6 +19,14 @@ #define MAXJUMP 4 #define MEMSIZE 10 +#define CHECKALLOC(ptr) \ + do { \ + if ((ptr) == NULL) { \ + VERBOSE (ERROR, fprintf (stderr, "can't get enough memory for '%s'\n", #ptr)); \ + exit (1); \ + } \ + } while (0) + /* type definition */ /* gobal variables */ @@ -171,10 +179,7 @@ int main (int argc, char *argv[]) free (buffer); } buffer = strdup (optarg); - if (buffer == NULL) { - VERBOSE (ERROR, fprintf (stderr, "%s: can't allocate memory\n", progname)); - return 1; - } + CHECKALLOC (buffer); size = strlen (buffer) + 1; break; case 'i': @@ -223,13 +228,10 @@ int main (int argc, char *argv[]) if (fid) { while (!feof (fid)) { buffer = (char *) realloc (buffer, size + BUFSIZE); - if (buffer == NULL) { - VERBOSE (ERROR, fprintf (stderr, "%s: can't allocate memory\n", progname)); - return 1; - } + CHECKALLOC (buffer); memset (buffer + size, 0, BUFSIZE); n = fread (buffer + size, 1, BUFSIZE, fid); - if (errno != 0) { + if ((n == 0) && (errno != 0)) { VERBOSE (ERROR, fprintf (stderr, "%s: can't read data from file '%s'\n", progname, input)); return 1; } @@ -266,9 +268,7 @@ int main (int argc, char *argv[]) } /* free buffer */ - if (buffer) { - free (buffer); - } + free (buffer); VERBOSE (INFO, fprintf (stdout, "\nmemory:"); int _i; for (_i = 0; _i < MEMSIZE; _i++) fprintf (stdout," %d", mem[_i]); fprintf (stdout,"\n")); -- 2.30.2