diff -urN middleman-2.0.1/src/main.c middleman/src/main.c
--- middleman-2.0.1/src/main.c	2004-03-11 17:28:57.000000000 -0500
+++ middleman/src/main.c	2006-02-02 11:36:16.000000000 -0500
@@ -407,7 +407,7 @@
 #else
 	pcre_free = xfree;
 	// grr... argument to malloc is int on some systems, and long on others
-	(void *) pcre_malloc = (void *) xmalloc;
+	pcre_malloc = (void* (*)(size_t))xmalloc;
 #endif
 
 	global->dns_cache = hash_create(DNS_HASH_SIZE);
diff -urN middleman-2.0.1/src/stats.c middleman/src/stats.c
--- middleman-2.0.1/src/stats.c	2004-03-11 17:27:16.000000000 -0500
+++ middleman/src/stats.c	2006-02-02 11:31:10.000000000 -0500
@@ -175,7 +175,7 @@
 
 	sc.name = stat;
 	sc.type = type | StatCounter::CALLBACK;
-	(void *)sc.value.callback = (void *)cb;
+	sc.value.callback = (void* (*)())cb;
 
 	counter_list.push_back(sc);
 
@@ -193,7 +193,7 @@
 
 	sc.name = stat;
 	sc.type = type | StatCounter::CALLBACK;
-	(void *)sc.value.callback = (void *)cb;
+	sc.value.callback = (void* (*)())cb;
 
 	counter_list.push_back(sc);
 
@@ -268,7 +268,7 @@
 		if (type & STRING)
 			string_val = (char *)value.callback();
 		else
-			uint_val = (unsigned int)value.callback();
+			uint_val = (unsigned int)(size_t)value.callback();
 	} else
 		uint_val = value.count;
 
