From afb91f205bbf0f3e54387622b06c659283908906 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 1 Oct 2012 09:54:35 +0300 Subject: [PATCH] Free hardlink sets centrally in fsmFree() - Having three places doing the same thing doesn't make a whole lotta sense... --- lib/fsm.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/lib/fsm.c b/lib/fsm.c index 29854b3..efbac68 100644 --- a/lib/fsm.c +++ b/lib/fsm.c @@ -547,15 +547,13 @@ static hardLink_t freeHardLink(hardLink_t li) return NULL; } -/* Check for hard links missing from payload, also freeing the data (eh?) */ +/* Check for hard links missing from payload */ static int checkHardLinks(FSM_t fsm) { int rc = 0; rpmfs fs = fsmGetFs(fsm); - while ((fsm->li = fsm->links) != NULL) { - fsm->links = fsm->li->next; - fsm->li->next = NULL; + for (fsm->li = fsm->links; fsm->li; fsm->li = fsm->li->next) { if (fsm->li->linksLeft) { for (nlink_t i = 0 ; i < fsm->li->linksLeft; i++) { int ix = fsm->li->filex[i]; @@ -573,7 +571,6 @@ static int checkHardLinks(FSM_t fsm) break; } } - fsm->li = freeHardLink(fsm->li); } return rc; } @@ -953,10 +950,7 @@ static int writeLinks(FSM_t fsm, rpmcpio_t archive) int j, rc = 0; nlink_t i, nlink; - while ((fsm->li = fsm->links) != NULL) { - fsm->links = fsm->li->next; - fsm->li->next = NULL; - + for (fsm->li = fsm->links; fsm->li; fsm->li = fsm->li->next) { /* Re-calculate link count for archive header. */ for (j = -1, nlink = 0, i = 0; i < fsm->li->nlink; i++) { if (fsm->li->filex[i] < 0) @@ -975,8 +969,6 @@ static int writeLinks(FSM_t fsm, rpmcpio_t archive) fsm->osb = fsm->sb; /* structure assignment */ if (!rc) rc = writeLinkedFile(fsm, archive); - - fsm->li = freeHardLink(fsm->li); } return rc; } -- 2.7.4