From: Laurent MAZET Date: Wed, 9 Oct 2024 09:52:53 +0000 (+0200) Subject: clean alloc checks X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=72c52012a32525bc27d82a9634d0bd3507ce46bd;p=brainfuck.git clean alloc checks --- 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"));