Commit 6b59e13c2c31b2a7edc9aaf87f6f7257ce91781a

Stefan Sperling 2018-04-02T19:25:28

always free ds->clist and ds->klist in got_diffreg()

diff --git a/lib/diffreg.c b/lib/diffreg.c
index e46456d..9f821a6 100644
--- a/lib/diffreg.c
+++ b/lib/diffreg.c
@@ -400,10 +400,6 @@ got_diffreg(int *rval, FILE *f1, FILE *f2, int flags,
 	}
 	ds->J = p;
 	unravel(ds, ds->klist[i]);
-	free(ds->clist);
-	ds->clist = NULL;
-	free(ds->klist);
-	ds->klist = NULL;
 
 	lp = reallocarray(ds->ixold, ds->len[0] + 2, sizeof(*ds->ixold));
 	if (lp == NULL) {
@@ -429,6 +425,8 @@ closem:
 	free(ds->J);
 	free(ds->member);
 	free(ds->class);
+	free(ds->clist);
+	free(ds->klist);
 	if (ds->anychange) {
 		args->status |= 1;
 		if (*rval == D_SAME)