From 6f14d1cc45dd4018686c330c13dfcdac95fa68ce Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Tue, 31 Jan 2023 10:22:33 +0100 Subject: [PATCH] change calloc to callocordie --- parser.c | 54 ++++++++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/parser.c b/parser.c index 4b4fab7..03ef985 100644 --- a/parser.c +++ b/parser.c @@ -46,21 +46,25 @@ int codecmp (char *ref, char *str) return 0; } -/* allocate new element */ +/* calloc or die function */ -element_t *newelement (func_t function, int nbops, int prio) +void *callocordie (size_t count, size_t size) { - element_t *new = (element_t *) calloc (1, sizeof (element_t)); + void *new = calloc (count, size); if (new == NULL) { VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); exit (1); } + return new; +} + +/* allocate new element */ + +element_t *newelement (func_t function, int nbops, int prio) +{ + element_t *new = (element_t *) callocordie (1, sizeof (element_t)); if (nbops) { - new->ops = (element_t **) calloc (nbops, sizeof (element_t *)); - if (new->ops == NULL) { - VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); - exit (1); - } + new->ops = (element_t **) callocordie (nbops, sizeof (element_t *)); } new->func = function; new->nbops = nbops; @@ -564,11 +568,7 @@ void memory (int nb) double *tmp = NULL; if (nb != storage_size) { l = (nb < storage_size) ? nb : storage_size; - tmp = (double *) calloc (nb, sizeof (double)); - if (tmp == NULL) { - VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); - exit (1); - } + tmp = (double *) callocordie (nb, sizeof (double)); for (i = 0; i < l; i++) { tmp[i] = storage[i]; } @@ -741,11 +741,7 @@ void prog (int id, int nbmems, element_t *root) if (programs == NULL) { /* initial memory allocation */ - programs = (workspace_t *) calloc (1, sizeof (workspace_t)); - if (programs == NULL) { - VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); - exit (1); - } + programs = (workspace_t *) callocordie (1, sizeof (workspace_t)); nb_programs = 1; n = 0; @@ -762,7 +758,10 @@ void prog (int id, int nbmems, element_t *root) /* new program */ n = nb_programs++; - programs = (workspace_t *) realloc (programs, nb_programs * sizeof (workspace_t)); + workspace_t *tmp = (workspace_t *) callocordie (nb_programs, sizeof (workspace_t)); + memcpy (tmp, programs, (nb_programs - 1) * sizeof (workspace_t)); + free (programs); + programs = tmp; } else { /* clean old program */ @@ -778,11 +777,7 @@ void prog (int id, int nbmems, element_t *root) /* set program */ (programs + n)->id = id; (programs + n)->answer = 0; - (programs + n)->storage = (double *) calloc (nbmems, sizeof (double)); - if ((programs + n)->storage == NULL) { - VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); - exit (1); - } + (programs + n)->storage = (double *) callocordie (nbmems, sizeof (double)); (programs + n)->storage_size = nbmems; (programs + n)->root = dupelement (root); } @@ -817,7 +812,10 @@ double call (int id, int nbops, element_t **ops) storage = (programs + n)->storage; storage_size = (programs + n)->storage_size; if (nbops > storage_size) { - storage = realloc (storage, nbops * sizeof (double)); + double *tmp = (double *) callocordie (nbops, sizeof (double)); + memcpy (tmp, storage, storage_size * sizeof (double)); + free (storage); + storage = tmp; storage_size = nbops; } for (i = 0; i < nbops; i++) { @@ -1068,11 +1066,7 @@ double evaluate_element (element_t *root, char mask) char **generate_completion_list () { int i, j, l = 0; - char **list = (char **) calloc (NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1, sizeof (char *)); - if (list == NULL) { - VERBOSE (ERROR, fprintf (stderr, "can't allocate memory\n")); - exit (1); - } + char **list = (char **) callocordie (NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1, sizeof (char *)); for (i = 0; i < NB_OPERATORS; i++) { list[l] = strdup ((operators + i)->keyword); -- 2.30.2