change calloc to callocordie
authorLaurent Mazet <laurent.mazet@thalesgroup.com>
Tue, 31 Jan 2023 09:22:33 +0000 (10:22 +0100)
committerLaurent Mazet <laurent.mazet@thalesgroup.com>
Tue, 31 Jan 2023 09:22:33 +0000 (10:22 +0100)
parser.c

index 4b4fab7678dd65352e28a2922fe2e94a56ba4810..03ef985f49b892aca4b906e8ee15d85f8ad31c8e 100644 (file)
--- 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);