Commit a44fc1d413bc1e2f0ed82aff60ce2069c33d2eda

Vicent Marti 2010-12-06T23:13:00

Fix type-conversion warnings The types in the git_index_entry struct are now system-defaults, and get truncated to uint32_t's when written back on the index. Signed-off-by: Vicent Marti <tanoku@gmail.com>

diff --git a/src/git2/index.h b/src/git2/index.h
index f0cae09..5e4a8d4 100644
--- a/src/git2/index.h
+++ b/src/git2/index.h
@@ -45,8 +45,8 @@ GIT_BEGIN_DECL
 
 /** Time used in a git index entry */
 typedef struct {
-	unsigned int seconds;
-	unsigned int nanoseconds;
+	time_t seconds;
+	time_t nanoseconds;
 } git_index_time;
 
 /** Memory representation of a file entry in the index. */
@@ -59,7 +59,7 @@ typedef struct git_index_entry {
 	unsigned int mode;
 	unsigned int uid;
 	unsigned int gid;
-	unsigned int file_size;
+	off_t file_size;
 
 	git_oid oid;
 
diff --git a/src/index.c b/src/index.c
index 3c2bbf8..6fdb46e 100644
--- a/src/index.c
+++ b/src/index.c
@@ -61,9 +61,14 @@ struct index_extension {
 	uint32_t extension_size;
 };
 
+struct entry_time {
+	uint32_t seconds;
+	uint32_t nanoseconds;
+};
+
 struct entry_short {
-	git_index_time ctime;
-	git_index_time mtime;
+	struct entry_time ctime;
+	struct entry_time mtime;
 	uint32_t dev;
 	uint32_t ino;
 	uint32_t mode;
@@ -76,8 +81,8 @@ struct entry_short {
 };
 
 struct entry_long {
-	git_index_time ctime;
-	git_index_time mtime;
+	struct entry_time ctime;
+	struct entry_time mtime;
 	uint32_t dev;
 	uint32_t ino;
 	uint32_t mode;
@@ -497,10 +502,10 @@ static size_t read_entry(git_index_entry *dest, const void *buffer, size_t buffe
 
 	source = (const struct entry_short *)(buffer);
 
-	dest->ctime.seconds = ntohl(source->ctime.seconds);
-	dest->ctime.nanoseconds = ntohl(source->ctime.nanoseconds);
-	dest->mtime.seconds = ntohl(source->mtime.seconds);
-	dest->mtime.nanoseconds = ntohl(source->mtime.nanoseconds);
+	dest->ctime.seconds = (time_t)ntohl(source->ctime.seconds);
+	dest->ctime.nanoseconds = (time_t)ntohl(source->ctime.nanoseconds);
+	dest->mtime.seconds = (time_t)ntohl(source->mtime.seconds);
+	dest->mtime.nanoseconds = (time_t)ntohl(source->mtime.nanoseconds);
 	dest->dev = ntohl(source->dev);
 	dest->ino = ntohl(source->ino);
 	dest->mode = ntohl(source->mode);
@@ -692,7 +697,7 @@ int git_index__write(git_index *index, git_filelock *file)
 		return GIT_ENOMEM;
 
 #define WRITE_WORD(_word) {\
-	uint32_t network_word = htonl((_word));\
+	uint32_t network_word = htonl(((uint32_t)(_word)));\
 	git_filelock_write(file, &network_word, 4);\
 	git_hash_update(digest, &network_word, 4);\
 }
diff --git a/src/vector.c b/src/vector.c
index 3f76df2..47e8ce8 100644
--- a/src/vector.c
+++ b/src/vector.c
@@ -34,7 +34,7 @@ static int resize_vector(git_vector *v)
 {
 	void **new_contents;
 
-	v->_alloc_size *= resize_factor; 
+	v->_alloc_size = (unsigned int)(v->_alloc_size * resize_factor);
 	if (v->_alloc_size == 0)
 		v->_alloc_size = minimum_size;
 
diff --git a/tests/t0601-read.c b/tests/t0601-read.c
index 0aaa6e3..4373fbc 100644
--- a/tests/t0601-read.c
+++ b/tests/t0601-read.c
@@ -15,7 +15,7 @@ struct test_entry {
 	unsigned int index;
 	char path[128];
 	size_t file_size;
-	uint32_t mtime;
+	time_t mtime;
 };
 
 struct test_entry TEST_ENTRIES[] = {