improve error handling in makedeps
authorMichael Schroeder <mls@suse.de>
Mon, 10 Dec 2012 09:31:32 +0000 (10:31 +0100)
committerMichael Schroeder <mls@suse.de>
Mon, 10 Dec 2012 09:31:32 +0000 (10:31 +0100)
ext/repo_rpmdb.c

index c7b8a15..c5aa0fc 100644 (file)
@@ -450,26 +450,19 @@ makedeps(Pool *pool, Repo *repo, RpmHead *rpmhead, int tagn, int tagv, int tagf,
 
   strong = flags & (MAKEDEPS_FILTER_STRONG|MAKEDEPS_FILTER_WEAK);
   n = headstringarray(rpmhead, tagn, &nc);
-  if (!n)
+  if (!n || !nc)
     return 0;
+  vc = fc = 0;
   v = headstringarray(rpmhead, tagv, &vc);
-  if (!v)
-    {
-      solv_free(n);
-      return 0;
-    }
   f = headint32array(rpmhead, tagf, &fc);
-  if (!f)
-    {
-      solv_free(n);
-      free(v);
-      return 0;
-    }
-  if (nc != vc || nc != fc)
+  if (!v || !f || nc != vc || nc != fc)
     {
       char *pkgname = rpm_query(rpmhead, 0);
       fprintf(stderr, "bad dependency entries for %s: %d %d %d\n", pkgname ? pkgname : "<NULL>", nc, vc, fc);
       solv_free(pkgname);
+      solv_free(n);
+      solv_free(v);
+      solv_free(f);
       return 0;
     }