Commit 2b6e1908476c95c84d3e3a62ac069f789156b070

Russell Belfer 2013-08-22T11:50:10

A bit of item alignment paranoia

diff --git a/src/sortedcache.c b/src/sortedcache.c
index c087dbb..16dd6a7 100644
--- a/src/sortedcache.c
+++ b/src/sortedcache.c
@@ -258,7 +258,7 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
 	int error = 0;
 	khiter_t pos;
 	void *item;
-	size_t keylen;
+	size_t keylen, itemlen;
 	char *item_key;
 
 	pos = git_strmap_lookup_index(sc->map, key);
@@ -267,9 +267,12 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
 		goto done;
 	}
 
-	keylen = strlen(key);
-	item = git_pool_mallocz(&sc->pool, sc->item_path_offset + keylen + 1);
-	if (!item) { /* don't use GITERR_CHECK_ALLOC b/c of lock */
+	keylen  = strlen(key);
+	itemlen = sc->item_path_offset + keylen + 1;
+	itemlen = (itemlen + 7) & ~7;
+
+	if ((item = git_pool_mallocz(&sc->pool, itemlen)) == NULL) {
+		/* don't use GITERR_CHECK_ALLOC b/c of lock */
 		error = -1;
 		goto done;
 	}