--- fsx.c.orig	2010-02-21 22:57:09.000000000 +0100
+++ fsx.c	2010-02-21 22:43:05.000000000 +0100
@@ -190,6 +190,9 @@
 
 	va_start(args, fmt);
 	vfprintf(stdout, fmt, args);
+	va_end(args);
+
+	va_start(args, fmt);
 	if (fsxlogf)
 		vfprintf(fsxlogf, fmt, args);
 	va_end(args);
@@ -198,7 +201,7 @@
 void
 prterr(const char *prefix)
 {
-	prt("%s%s%s\n", prefix, prefix ? ": " : "", strerror(errno));
+	prt("%s%s%s\n", prefix ? prefix : "", prefix ? ": " : "", strerror(errno));
 }
 
 
@@ -701,12 +704,12 @@
 
 	if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE,
 		    MAP_FILE | MAP_SHARED, fd,
-		    (off_t)(offset - pg_offset))) == (char *)-1) {
+		    (off_t)(offset - pg_offset))) == MAP_FAILED) {
 		prterr("domapwrite: mmap");
 		report_failure(202);
 	}
 	memcpy(p + pg_offset, good_buf + offset, size);
-	if (msync(p, map_size, 0) != 0) {
+	if (msync(p, map_size, MS_SYNC) != 0) {
 		prterr("domapwrite: msync");
 		report_failure(203);
 	}
@@ -1141,6 +1144,7 @@
 	for (i = 0; i < maxfilelen; i++)
 		original_buf[i] = random() % 256;
 	good_buf = (char *) malloc(maxfilelen);
+	if (good_buf == NULL) errx(1,"malloc(%d)\n",maxfilelen);
 	memset(good_buf, '\0', maxfilelen);
 	temp_buf = (char *) malloc(maxoplen);
 	memset(temp_buf, '\0', maxoplen);
