Commit Diff


commit - 3d1a1e4cbc91e39df83eb35eb3df3cc87719a0b5
commit + bb6672b6aba1cb45a10d52bec828e68379e9ad61
blob - b52856ef9a6f270f64d7a55d2f968ff3d9040061
blob + 4e9a9b9541862d224810bd98f0fb1953d78d7259
--- lib/pack_create.c
+++ lib/pack_create.c
@@ -867,11 +867,19 @@ add_object(int want_meta, struct got_object_idset *ids
 		(*nfound)++;
 		err = report_progress(progress_cb, progress_arg, rl,
 		    *ncolored, *nfound, *ntrees, 0L, 0, 0, 0, 0);
-		if (err)
+		if (err) {
+			clear_meta(m);
+			free(m);
 			return err;
+		}
 	}
 
-	return got_object_idset_add(idset, id, m);
+	err = got_object_idset_add(idset, id, m);
+	if (err) {
+		clear_meta(m);
+		free(m);
+	}
+	return err;
 }
 
 static const struct got_error *
blob - ea1f566d447530cb54a004e23cbef404038565bb
blob + 8616b4e5f3930bdff53402d97880b3ae74a6fa5f
--- lib/reference.c
+++ lib/reference.c
@@ -1569,8 +1569,10 @@ add_object_id_map_entry(struct got_object_idset *idset
 
 		TAILQ_INIT(&ent->refs);
 		err = got_object_idset_add(idset, id, ent);
-		if (err)
+		if (err) {
+			free(ent);
 			return err;
+		}
 	}
 
 	err = got_reflist_entry_dup(&new, re);