Commit c1b62b2eded035d22584c427487503335f519d4c

Ramsay Jones 2010-06-01T19:35:49

Fix a "dereference of type-punned pointer" compiler warning gcc (4.4.0) issues the following warning: src/revobject.c:33: warning: dereferencing type-punned pointer \ will break strict-aliasing rules We suppress the warning by copying the first 4 bytes from the oid structure into an 'unsigned int' using memcpy(). This will also fix any potential alignment issues on certain platforms. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Andreas Ericsson <ae@op5.se>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
diff --git a/src/revobject.c b/src/revobject.c
index 7b6c856..5130f23 100644
--- a/src/revobject.c
+++ b/src/revobject.c
@@ -30,7 +30,9 @@ static const double max_load_factor = 0.65;
 
 static unsigned int git_revpool_table__hash(const git_oid *id)
 {
-	return *((unsigned int *)id->id);
+	unsigned int r;
+	memcpy(&r, id->id, sizeof(r));
+	return r;
 }
 
 git_revpool_table *git_revpool_table_create(unsigned int min_size)