mercurial/parsers.c: fix compiler warning
authorAbhay Kadam <abhaykadam88@gmail.com>
Tue, 19 Nov 2013 23:49:11 +0530
changeset 20110 40b7c6e4b993
parent 20108 af12f58e2aa0
child 20111 9bfa86746c9c
mercurial/parsers.c: fix compiler warning When try to compile on x64 OS X, I get this warning: mercurial/parsers.c:931:27: warning: implicit conversion loses integer precision : 'long' to 'int' [-Wshorten-64-to-32] ? 4 : self->raw_length / 2; The patch verifies if value of self->raw_length falls bellow INT_MAX; if not, it raises the ValueError exception. If value of self->raw_length is greater than 4, it's casted to int type, to eliminate the warning.
mercurial/parsers.c
--- a/mercurial/parsers.c	Mon Nov 25 16:15:44 2013 -0600
+++ b/mercurial/parsers.c	Tue Nov 19 23:49:11 2013 +0530
@@ -927,8 +927,13 @@
 static int nt_init(indexObject *self)
 {
 	if (self->nt == NULL) {
+		if (self->raw_length > INT_MAX) {
+			PyErr_SetString(PyExc_ValueError, "overflow in nt_init");
+			return -1;
+		}
 		self->ntcapacity = self->raw_length < 4
-			? 4 : self->raw_length / 2;
+			? 4 : (int)self->raw_length / 2;
+
 		self->nt = calloc(self->ntcapacity, sizeof(nodetree));
 		if (self->nt == NULL) {
 			PyErr_NoMemory();