Fix bdiff test failures on AIX.
authorJim Hague <jim.hague@acm.org>
Tue, 23 Oct 2007 10:39:24 +0000
changeset 5614 5133e9f61700
parent 5611 60bd4e707a7d
child 5615 ce383c80a177
child 5617 924fd86f0579
Fix bdiff test failures on AIX. The test fails when, in the call to calloc(), the number of elements (bn) is 0. In that case, calloc() on AIX will return NULL, while the code expects a valid heap pointer. Both results are permissible under C99, Unix98 etc. Work around by ensuring that at least 1 element is requested.
mercurial/bdiff.c
--- a/mercurial/bdiff.c	Tue Dec 04 23:10:13 2007 +0100
+++ b/mercurial/bdiff.c	Tue Oct 23 10:39:24 2007 +0000
@@ -245,7 +245,7 @@
 
 	/* allocate and fill arrays */
 	t = equatelines(a, an, b, bn);
-	pos = (struct pos *)calloc(bn, sizeof(struct pos));
+	pos = (struct pos *)calloc((bn>0)?bn:1, sizeof(struct pos));
 	/* we can't have more matches than lines in the shorter file */
 	l.head = l.base = (struct hunk *)malloc(sizeof(struct hunk) *
 	                                        ((an<bn ? an:bn) + 1));