From 5d50462b1e3cc5687f31fad0d295b31fb9934c15 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Tue, 14 Feb 2023 13:57:51 +0100 Subject: [PATCH] fix a segfault on del --- program.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/program.c b/program.c index e8cd2d1..ef6d833 100644 --- a/program.c +++ b/program.c @@ -167,13 +167,10 @@ void del (int id) 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; } -- 2.30.2