changeset 5364:5737845fd974

bdiff: simple splitlines optimization
author Christoph Spiel <cspiel@freenet.de>
date Thu, 27 Sep 2007 23:58:54 -0500
parents 058e93c3d07d
children 458acf92b49e
files mercurial/bdiff.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/bdiff.c
+++ b/mercurial/bdiff.c
@@ -67,12 +67,13 @@ int splitlines(const char *a, int len, s
 {
 	int g, h, i;
 	const char *p, *b = a;
+	const char * const plast = a + len - 1;
 	struct line *l;
 
 	/* count the lines */
 	i = 1; /* extra line for sentinel */
 	for (p = a; p < a + len; p++)
-		if (*p == '\n' || p == a + len - 1)
+		if (*p == '\n' || p == plast)
 			i++;
 
 	*lr = l = (struct line *)malloc(sizeof(struct line) * i);
@@ -92,7 +93,7 @@ int splitlines(const char *a, int len, s
 			h ^= g >> 24;
 			h ^= g;
 		}
-		if (*p == '\n' || p == a + len - 1) {
+		if (*p == '\n' || p == plast) {
 			l->len = p - b + 1;
 			l->h = h * l->len;
 			l->l = b;