Commit Diff


commit - dbcc187b9759640744e16f6a7618045d5e7589a4
commit + 977143974aa7ea0d5df19a556344adf0880276c1
blob - 6ed62392ac8837da1d05604c313f32b82d0d4d7c
blob + 619ee0f6d5540989746da99bde2caf8a5f176865
--- lib/object_cache.c
+++ lib/object_cache.c
@@ -228,13 +228,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: