diff --git a/src/dehacked.c b/src/dehacked.c
index 627a3a11921ad43b945f0ea1519fec4d20750dff..eedffb6b1d5530f0af011c19b8b59e4b67ecd273 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -395,7 +395,7 @@ static void readPlayer(MYFILE *f, INT32 num)
 				// It works down here, though.
 				{
 					INT32 numline = 0;
-					for (i = 0; i < MAXLINELEN-1; i++)
+					for (i = 0; (size_t)i < sizeof(description[num].notes)-1; i++)
 					{
 						if (numline < 20 && description[num].notes[i] == '\n')
 							numline++;
@@ -1265,7 +1265,7 @@ static void readgametype(MYFILE *f, char *gtname)
 				// It works down here, though.
 				{
 					INT32 numline = 0;
-					for (i = 0; i < MAXLINELEN-1; i++)
+					for (i = 0; (size_t)i < sizeof(gtdescription)-1; i++)
 					{
 						if (numline < 20 && gtdescription[i] == '\n')
 							numline++;
diff --git a/src/g_demo.c b/src/g_demo.c
index 7c949a4c822293e50a1eef11ed1b129f19381a2a..be3b9c1fdbd266e4e736ec43fc019e365390ddfc 100644
--- a/src/g_demo.c
+++ b/src/g_demo.c
@@ -765,7 +765,7 @@ void G_GhostTicker(void)
 			if (xziptic & EZT_THOKMASK)
 			{ // Let's only spawn ONE of these per frame, thanks.
 				mobj_t *mobj;
-				INT32 type = -1;
+				UINT32 type = MT_NULL;
 				if (g->mo->skin)
 				{
 					skin_t *skin = (skin_t *)g->mo->skin;
@@ -997,7 +997,11 @@ void G_ReadMetalTic(mobj_t *metal)
 	// Read changes from the tic
 	if (ziptic & GZT_XYZ)
 	{
-		P_TeleportMove(metal, READFIXED(metal_p), READFIXED(metal_p), READFIXED(metal_p));
+		// make sure the values are read in the right order
+		oldmetal.x = READFIXED(metal_p);
+		oldmetal.y = READFIXED(metal_p);
+		oldmetal.z = READFIXED(metal_p);
+		P_TeleportMove(metal, oldmetal.x, oldmetal.y, oldmetal.z);
 		oldmetal.x = metal->x;
 		oldmetal.y = metal->y;
 		oldmetal.z = metal->z;
@@ -1052,7 +1056,7 @@ void G_ReadMetalTic(mobj_t *metal)
 		if (xziptic & EZT_THOKMASK)
 		{ // Let's only spawn ONE of these per frame, thanks.
 			mobj_t *mobj;
-			INT32 type = -1;
+			UINT32 type = MT_NULL;
 			if (metal->skin)
 			{
 				skin_t *skin = (skin_t *)metal->skin;
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 983d1f9a64c40ca5a0eaff6bfff353c290f54cdc..305e732778495cea6b7ac6af0978046b6a709747 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -1771,7 +1771,7 @@ void P_XYMovement(mobj_t *mo)
 	fixed_t oldx, oldy; // reducing bobbing/momentum on ice when up against walls
 	boolean moved;
 	pslope_t *oldslope = NULL;
-	vector3_t slopemom;
+	vector3_t slopemom = {0,0,0};
 	fixed_t predictedz = 0;
 
 	I_Assert(mo != NULL);
diff --git a/src/p_polyobj.c b/src/p_polyobj.c
index d94f363c3ec75f88e9c3711526a3c74065c7bca7..3f578a302ef68ce475f5aca72ee26b2730a9f97d 100644
--- a/src/p_polyobj.c
+++ b/src/p_polyobj.c
@@ -1042,7 +1042,7 @@ static boolean Polyobj_moveXY(polyobj_t *po, fixed_t x, fixed_t y, boolean check
 // The formula for this can be found here:
 // http://www.inversereality.org/tutorials/graphics%20programming/2dtransformations.html
 // It is, of course, just a vector-matrix multiplication.
-static inline void Polyobj_rotatePoint(vertex_t *v, const vertex_t *c, angle_t ang)
+static inline void Polyobj_rotatePoint(vertex_t *v, const vector2_t *c, angle_t ang)
 {
 	vertex_t tmp = *v;
 
@@ -1095,7 +1095,7 @@ static void Polyobj_rotateLine(line_t *ld)
 }
 
 // Causes objects resting on top of the rotating polyobject to 'ride' with its movement.
-static void Polyobj_rotateThings(polyobj_t *po, vertex_t origin, angle_t delta, UINT8 turnthings)
+static void Polyobj_rotateThings(polyobj_t *po, vector2_t origin, angle_t delta, UINT8 turnthings)
 {
 	static INT32 pomovecount = 10000;
 	INT32 x, y;
@@ -1175,7 +1175,7 @@ static boolean Polyobj_rotate(polyobj_t *po, angle_t delta, UINT8 turnthings, bo
 {
 	size_t i;
 	angle_t angle;
-	vertex_t origin;
+	vector2_t origin;
 	INT32 hitflags = 0;
 
 	// don't move bad polyobjects
diff --git a/src/sdl/i_main.c b/src/sdl/i_main.c
index 3eded734f3d1adf4cbe620843754cffae259ed77..26efd327556b8384915fd0dfe2fc01919e0f32da 100644
--- a/src/sdl/i_main.c
+++ b/src/sdl/i_main.c
@@ -103,6 +103,93 @@ static inline VOID MakeCodeWritable(VOID)
 }
 #endif
 
+#ifdef LOGMESSAGES
+static VOID InitLogging(VOID)
+{
+	const char *logdir = NULL;
+	time_t my_time;
+	struct tm * timeinfo;
+	const char *format;
+	const char *reldir;
+	int left;
+	boolean fileabs;
+#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
+	const char *link;
+#endif
+
+	logdir = D_Home();
+
+	my_time = time(NULL);
+	timeinfo = localtime(&my_time);
+
+	if (M_CheckParm("-logfile") && M_IsNextParm())
+	{
+		format = M_GetNextParm();
+		fileabs = M_IsPathAbsolute(format);
+	}
+	else
+	{
+		format = "log-%Y-%m-%d_%H-%M-%S.txt";
+		fileabs = false;
+	}
+
+	if (fileabs)
+	{
+		strftime(logfilename, sizeof logfilename, format, timeinfo);
+	}
+	else
+	{
+		if (M_CheckParm("-logdir") && M_IsNextParm())
+			reldir = M_GetNextParm();
+		else
+			reldir = "logs";
+
+		if (M_IsPathAbsolute(reldir))
+		{
+			left = snprintf(logfilename, sizeof logfilename,
+					"%s"PATHSEP, reldir);
+		}
+		else
+#ifdef DEFAULTDIR
+		if (logdir)
+		{
+			left = snprintf(logfilename, sizeof logfilename,
+					"%s"PATHSEP DEFAULTDIR PATHSEP"%s"PATHSEP, logdir, reldir);
+		}
+		else
+#endif/*DEFAULTDIR*/
+		{
+			left = snprintf(logfilename, sizeof logfilename,
+					"."PATHSEP"%s"PATHSEP, reldir);
+		}
+
+		strftime(&logfilename[left], sizeof logfilename - left,
+				format, timeinfo);
+	}
+
+	M_MkdirEachUntil(logfilename,
+			M_PathParts(logdir) - 1,
+			M_PathParts(logfilename) - 1, 0755);
+
+#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
+	logstream = fopen(logfilename, "w");
+#ifdef DEFAULTDIR
+	if (logdir)
+		link = va("%s/"DEFAULTDIR"/latest-log.txt", logdir);
+	else
+#endif/*DEFAULTDIR*/
+		link = "latest-log.txt";
+	unlink(link);
+	if (symlink(logfilename, link) == -1)
+	{
+		I_OutputMsg("Error symlinking latest-log.txt: %s\n", strerror(errno));
+	}
+#else/*defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)*/
+	logstream = fopen("latest-log.txt", "wt+");
+#endif/*defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)*/
+}
+#endif
+
 
 /**	\brief	The main function
 
@@ -121,7 +208,6 @@ int SDL_main(int argc, char **argv)
 int main(int argc, char **argv)
 #endif
 {
-	const char *logdir = NULL;
 	myargc = argc;
 	myargv = argv; /// \todo pull out path to exe from this string
 
@@ -135,90 +221,9 @@ int main(int argc, char **argv)
 
 #ifdef LOGMESSAGES
 	if (!M_CheckParm("-nolog"))
-	{
-		time_t my_time;
-		struct tm * timeinfo;
-		const char *format;
-		const char *reldir;
-		int left;
-		boolean fileabs;
-#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
-		const char *link;
-#endif
-
-		logdir = D_Home();
-
-		my_time = time(NULL);
-		timeinfo = localtime(&my_time);
-
-		if (M_CheckParm("-logfile") && M_IsNextParm())
-		{
-			format = M_GetNextParm();
-			fileabs = M_IsPathAbsolute(format);
-		}
-		else
-		{
-			format = "log-%Y-%m-%d_%H-%M-%S.txt";
-			fileabs = false;
-		}
-
-		if (fileabs)
-		{
-			strftime(logfilename, sizeof logfilename, format, timeinfo);
-		}
-		else
-		{
-			if (M_CheckParm("-logdir") && M_IsNextParm())
-				reldir = M_GetNextParm();
-			else
-				reldir = "logs";
-
-			if (M_IsPathAbsolute(reldir))
-			{
-				left = snprintf(logfilename, sizeof logfilename,
-						"%s"PATHSEP, reldir);
-			}
-			else
-#ifdef DEFAULTDIR
-			if (logdir)
-			{
-				left = snprintf(logfilename, sizeof logfilename,
-						"%s"PATHSEP DEFAULTDIR PATHSEP"%s"PATHSEP, logdir, reldir);
-			}
-			else
-#endif/*DEFAULTDIR*/
-			{
-				left = snprintf(logfilename, sizeof logfilename,
-						"."PATHSEP"%s"PATHSEP, reldir);
-			}
+		InitLogging();
 #endif/*LOGMESSAGES*/
 
-			strftime(&logfilename[left], sizeof logfilename - left,
-					format, timeinfo);
-		}
-
-		M_MkdirEachUntil(logfilename,
-				M_PathParts(logdir) - 1,
-				M_PathParts(logfilename) - 1, 0755);
-
-#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
-		logstream = fopen(logfilename, "w");
-#ifdef DEFAULTDIR
-		if (logdir)
-			link = va("%s/"DEFAULTDIR"/latest-log.txt", logdir);
-		else
-#endif/*DEFAULTDIR*/
-			link = "latest-log.txt";
-		unlink(link);
-		if (symlink(logfilename, link) == -1)
-		{
-			I_OutputMsg("Error symlinking latest-log.txt: %s\n", strerror(errno));
-		}
-#else/*defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)*/
-		logstream = fopen("latest-log.txt", "wt+");
-#endif/*defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)*/
-	}
-
 	//I_OutputMsg("I_StartupSystem() ...\n");
 	I_StartupSystem();
 #if defined (_WIN32)
diff --git a/src/v_video.c b/src/v_video.c
index 5a985555fdd854d593480a145e600254dfd52171..2f546dea2c2073ba1d18d0187fe09e4d286b74d4 100644
--- a/src/v_video.c
+++ b/src/v_video.c
@@ -3710,7 +3710,7 @@ void V_Init(void)
 
 #ifdef DEBUG
 	CONS_Debug(DBG_RENDER, "V_Init done:\n");
-	for (i = 0; i < NUMSCREENS+1; i++)
+	for (i = 0; i < NUMSCREENS; i++)
 		CONS_Debug(DBG_RENDER, " screens[%d] = %x\n", i, screens[i]);
 #endif
 }
diff --git a/src/win32/win_main.c b/src/win32/win_main.c
index 8a29f7e188593becc0c480b77008ae1841e8b737..e1d90881ba4fac766c3720eb318c0a3b58cfbfe6 100644
--- a/src/win32/win_main.c
+++ b/src/win32/win_main.c
@@ -643,37 +643,28 @@ int WINAPI WinMain (HINSTANCE hInstance,
                     int       nCmdShow)
 {
 	int Result = -1;
-
-#if 0
-	// Win95 and NT <4 don't have this, so link at runtime.
-	p_IsDebuggerPresent pfnIsDebuggerPresent = (p_IsDebuggerPresent)GetProcAddress(GetModuleHandleA("kernel32.dll"),"IsDebuggerPresent");
-#endif
-
 	UNREFERENCED_PARAMETER(hPrevInstance);
 	UNREFERENCED_PARAMETER(lpCmdLine);
 	UNREFERENCED_PARAMETER(nCmdShow);
 
+	{
 #if 0
+		p_IsDebuggerPresent pfnIsDebuggerPresent = (p_IsDebuggerPresent)GetProcAddress(GetModuleHandleA("kernel32.dll"),"IsDebuggerPresent");
+		if((!pfnIsDebuggerPresent || !pfnIsDebuggerPresent())
 #ifdef BUGTRAP
-	// Try BugTrap first.
-	if((!pfnIsDebuggerPresent || !pfnIsDebuggerPresent()) && InitBugTrap())
-		Result = HandledWinMain(hInstance);
-	else
-	{
+			&& !InitBugTrap()
 #endif
-		// Try Dr MinGW's exception handler.
-		if (!pfnIsDebuggerPresent || !pfnIsDebuggerPresent())
+		)
 #endif
+		{
 			LoadLibraryA("exchndl.dll");
-
+		}
+	}
 #ifndef __MINGW32__
-		prevExceptionFilter = SetUnhandledExceptionFilter(RecordExceptionInfo);
+	prevExceptionFilter = SetUnhandledExceptionFilter(RecordExceptionInfo);
 #endif
-
-		Result = HandledWinMain(hInstance);
+	Result = HandledWinMain(hInstance);
 #ifdef BUGTRAP
-	}	// BT failure clause.
-
 	// This is safe even if BT didn't start.
 	ShutdownBugTrap();
 #endif