r2961 - trunk/varnish-cache/lib/libvarnish

phk at projects.linpro.no phk at projects.linpro.no
Sat Jul 19 13:38:32 CEST 2008


Author: phk
Date: 2008-07-19 13:38:31 +0200 (Sat, 19 Jul 2008)
New Revision: 2961

Modified:
   trunk/varnish-cache/lib/libvarnish/argv.c
Log:
FlexeLint inspired polishing:

Better choice of data types.



Modified: trunk/varnish-cache/lib/libvarnish/argv.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/argv.c	2008-07-19 11:33:24 UTC (rev 2960)
+++ trunk/varnish-cache/lib/libvarnish/argv.c	2008-07-19 11:38:31 UTC (rev 2961)
@@ -48,32 +48,33 @@
 #include "libvarnish.h"
 
 static int
-BackSlash(const char *s, int *res)
+BackSlash(const char *s, char *res)
 {
-	int i, r;
+	int r;
+	char c;
 	unsigned u;
 
 	assert(*s == '\\');
-	r = i = 0;
+	r = c = 0;
 	switch(s[1]) {
 	case 'n':
-		i = '\n';
+		c = '\n';
 		r = 2;
 		break;
 	case 'r':
-		i = '\r';
+		c = '\r';
 		r = 2;
 		break;
 	case 't':
-		i = '\t';
+		c = '\t';
 		r = 2;
 		break;
 	case '"':
-		i = '"';
+		c = '"';
 		r = 2;
 		break;
 	case '\\':
-		i = '\\';
+		c = '\\';
 		r = 2;
 		break;
 	case '0': case '1': case '2': case '3':
@@ -83,13 +84,14 @@
 				break;
 			if (s[r] - '0' > 7)
 				break;
-			i <<= 3;
-			i |= s[r] - '0';
+			c <<= 3;	/*lint !e701 signed left shift */
+			c |= s[r] - '0';
 		}
 		break;
 	case 'x':
 		if (1 == sscanf(s + 1, "x%02x", &u)) {
-			i = u;
+			assert(!(u & ~0xff));
+			c = u;	/*lint !e734 loss of precision */
 			r = 4;
 		}
 		break;
@@ -97,7 +99,7 @@
 		break;
 	}
 	if (res != NULL)
-		*res = i;
+		*res = c;
 	return (r);
 }
 
@@ -106,7 +108,7 @@
 {
 	const char *q;
 	char *p, *r;
-	int i, j;
+	int i;
 
 	p = calloc((e - s) + 1, 1);
 	if (p == NULL)
@@ -116,9 +118,9 @@
 			*r++ = *q++;
 			continue;
 		}
-		i = BackSlash(q, &j);
+		i = BackSlash(q, r);
 		q += i;
-		*r++ = j;
+		r++;
 	}
 	*r = '\0';
 	return (p);




More information about the varnish-commit mailing list