Commit Diff


commit - ab451195b3d2fe777bb1aa5dd88e58c1b0c3a25f
commit + f1461b8c3c7e76e5912760a8c7e959bfa7e205df
blob - 4e4e2777b1dbdc01db5204cfc9bf11cf2dde7418
blob + a70f0780746f30049e03b112cf496e32c2e9f507
--- lib/object_cache.c
+++ lib/object_cache.c
@@ -227,13 +227,14 @@ got_object_cache_add(struct got_object_cache *cache, s
 			got_object_raw_close(ce->data.raw);
 			break;
 		}
-		free(ce);
+		memset(ce, 0, sizeof(*ce));
 		cache->cache_evict++;
+	} else {
+		ce = malloc(sizeof(*ce));
+		if (ce == NULL)
+			return got_error_from_errno("malloc");
 	}
 
-	ce = malloc(sizeof(*ce));
-	if (ce == NULL)
-		return got_error_from_errno("malloc");
 	memcpy(&ce->id, id, sizeof(ce->id));
 	switch (cache->type) {
 	case GOT_OBJECT_CACHE_TYPE_OBJ: