diff options
-rw-r--r-- | lib/rpminstall.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/rpminstall.c b/lib/rpminstall.c index 3a1b87d35..901964f8c 100644 --- a/lib/rpminstall.c +++ b/lib/rpminstall.c @@ -355,7 +355,6 @@ static int tryReadHeader(rpmts ts, struct rpmEIU * eiu, Header * hdrp) fd = NULL; } eiu->numFailed++; - *eiu->fnp = NULL; return RPMRC_FAIL; } @@ -371,7 +370,6 @@ static int tryReadHeader(rpmts ts, struct rpmEIU * eiu, Header * hdrp) if (eiu->rpmrc == RPMRC_FAIL) { rpmlog(RPMLOG_ERR, _("%s cannot be installed\n"), *eiu->fnp); eiu->numFailed++; - *eiu->fnp = NULL; } return RPMRC_OK; @@ -556,8 +554,12 @@ restart: rpmlog(RPMLOG_DEBUG, "============== %s\n", *eiu->fnp); (void) urlPath(*eiu->fnp, &fileName); - if (tryReadHeader(ts, eiu, &h) == RPMRC_FAIL) + if (tryReadHeader(ts, eiu, &h) == RPMRC_FAIL) { + if (eiu->pkgState[eiu->fnp - eiu->pkgURL] == 1) + (void) unlink(*eiu->fnp); + *eiu->fnp = _free(*eiu->fnp); continue; + } if (eiu->rpmrc == RPMRC_NOTFOUND) { rc = tryReadManifest(eiu); @@ -566,6 +568,10 @@ restart: headerFree(h); goto restart; } + } else if (eiu->rpmrc == RPMRC_FAIL) { + if (eiu->pkgState[eiu->fnp - eiu->pkgURL] == 1) + (void) unlink(*eiu->fnp); + *eiu->fnp = _free(*eiu->fnp); } if (headerIsSource(h)) { |