free_ws (programs[n]);
/* remove entry */
- workspace_t **tmp = (workspace_t **) callocordie (--nb_programs, sizeof (workspace_t *));
- if (n != 0) {
- memcpy (tmp, programs, (n - 1) * sizeof (workspace_t));
- }
- if (n != nb_programs) {
- memcpy (tmp + n - 1, programs + n, (nb_programs - n) * sizeof (workspace_t));
- }
+ workspace_t **tmp = (workspace_t **) callocordie (nb_programs - 1, sizeof (workspace_t *));
+ memcpy (tmp, programs, n * sizeof (workspace_t *));
+ memcpy (tmp + n, programs + n + 1, (nb_programs - n - 1) * sizeof (workspace_t *));
+ nb_programs--;
free (programs);
programs = tmp;
}