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;
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];
}
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;
/* 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 */
/* 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);
}
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++) {
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);