Return error code from rpmtsAddEraseElement() failure
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 2 Oct 2009 19:15:51 +0000 (22:15 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 2 Oct 2009 19:15:51 +0000 (22:15 +0300)
- trying to remove non-installed header counts as an error

lib/depends.c
lib/rpmts.h

index 2cb8fd7..e9c2d35 100644 (file)
@@ -52,6 +52,9 @@ static int removePackage(rpmts ts, Header h, rpmte depends)
     rpmte p;
     unsigned int dboffset = headerGetInstance(h);
 
+    /* Can't remove what's not installed */
+    if (dboffset == 0) return 1;
+
     /* Filter out duplicate erasures. */
     if (ts->numRemovedPackages > 0 && ts->removedPackages != NULL) {
        if (bsearch(&dboffset, ts->removedPackages, ts->numRemovedPackages,
index 70e90b9..dcb424d 100644 (file)
@@ -629,7 +629,7 @@ int rpmtsAddInstallElement(rpmts ts, Header h,
  * @param ts           transaction set
  * @param h            header
  * @param dboffset     ununsed
- * @return             0 on success
+ * @return             0 on success, 1 on error (not installed)
  */
 int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset);