Commit e8a952561c4e59ca308d1973de46fc32ad91a022

Ramsay Jones 2010-01-04T18:57:13

msvc: Fix some -W4 warnings Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>

diff --git a/src/delta-apply.c b/src/delta-apply.c
index 7b592ec..4915947 100644
--- a/src/delta-apply.c
+++ b/src/delta-apply.c
@@ -9,7 +9,8 @@
  * Nicolas Pitre <nico@cam.org>.
  */
 
-static size_t hdr_sz(
+static int hdr_sz(
+	size_t *size,
 	const unsigned char **delta,
 	const unsigned char *end)
 {
@@ -25,7 +26,8 @@ static size_t hdr_sz(
 		shift += 7;
 	} while (c & 0x80);
 	*delta = d;
-	return r;
+	*size = r;
+	return 0;
 }
 
 int git__delta_apply(
@@ -36,17 +38,19 @@ int git__delta_apply(
 	size_t delta_len)
 {
 	const unsigned char *delta_end = delta + delta_len;
-	size_t res_sz;
+	size_t base_sz, res_sz;
 	unsigned char *res_dp;
 
 	/* Check that the base size matches the data we were given;
 	 * if not we would underflow while accessing data from the
 	 * base object, resulting in data corruption or segfault.
 	 */
-	if (base_len != hdr_sz(&delta, delta_end))
+	if ((hdr_sz(&base_sz, &delta, delta_end) < 0) || (base_sz != base_len))
+		return GIT_ERROR;
+
+	if (hdr_sz(&res_sz, &delta, delta_end) < 0)
 		return GIT_ERROR;
 
-	res_sz = hdr_sz(&delta, delta_end);
 	if ((res_dp = git__malloc(res_sz + 1)) == NULL)
 		return GIT_ERROR;
 	res_dp[res_sz] = '\0';
diff --git a/src/fileops.c b/src/fileops.c
index d1621f2..b3715dc 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -209,7 +209,6 @@ int gitfo_write_cached(gitfo_cache *ioc, void *buff, size_t len)
 		if (len > ioc->cache_size)
 			return gitfo_write(ioc->fd, buf, len);
 	}
-	return GIT_SUCCESS;
 }
 
 int gitfo_close_cached(gitfo_cache *ioc)
diff --git a/src/odb.c b/src/odb.c
index afadc73..982cc52 100644
--- a/src/odb.c
+++ b/src/odb.c
@@ -840,6 +840,8 @@ static void packlist_dec(git_odb *db, git_packlist *pl)
 {
 	int need_free;
 
+	assert(db && pl);
+
 	gitlck_lock(&db->lock);
 	need_free = !--pl->refcnt;
 	gitlck_unlock(&db->lock);
diff --git a/tests/t0101-oid.c b/tests/t0101-oid.c
index 4711d37..16ba02b 100644
--- a/tests/t0101-oid.c
+++ b/tests/t0101-oid.c
@@ -19,7 +19,7 @@ BEGIN_TEST(invalid_string_moo)
 	must_fail(git_oid_mkstr(&out, "moo"));
 END_TEST
 
-static int from_hex(unsigned char i)
+static int from_hex(unsigned int i)
 {
 	if (i >= '0' && i <= '9')
 		return i - '0';
@@ -38,14 +38,14 @@ BEGIN_TEST(invalid_string_all_chars)
 		0xb7, 0x75, 0x21, 0x3c, 0x23,
 		0xa8, 0xbd, 0x74, 0xf5, 0xe0,
 	};
-	char in[41] = "16a67770b7d8d72317c4b775213c23a8bd74f5e0\0";
+	char in[41] = "16a67770b7d8d72317c4b775213c23a8bd74f5e0";
 	unsigned int i;
 
 	for (i = 0; i < 256; i++) {
 		in[38] = (char)i;
 
 		if (from_hex(i) >= 0) {
-			exp[19] = (from_hex(i) << 4);
+			exp[19] = (unsigned char)(from_hex(i) << 4);
 			if (git_oid_mkstr(&out, in))
 				test_die("line %d: must accept '%s'", __LINE__, in);
 			if (memcmp(out.id, exp, sizeof(out.id)))