diff --git a/src/sdl/i_main.c b/src/sdl/i_main.c
index af34da8d11796fe3a57c2359e8cf70e4da02abf2..f798ca6cd563f87296d8f41c4926e644c1df5613 100644
--- a/src/sdl/i_main.c
+++ b/src/sdl/i_main.c
@@ -142,6 +142,7 @@ int main(int argc, char **argv)
 		const char *reldir;
 		int left;
 		boolean fileabs;
+		const char *link;
 
 		logdir = D_Home();
 
@@ -201,11 +202,12 @@ int main(int argc, char **argv)
 #ifdef __unix__
 		logstream = fopen(logfilename, "w");
 #ifdef DEFAULTDIR
-		if (symlink(logfilename,
-					va("%s/"DEFAULTDIR"/latest-log.txt", logdir)) == -1)
+		link = va("%s/"DEFAULTDIR"/latest-log.txt", logdir);
 #else
-		if (symlink(logfilename, va("%s/latest-log.txt", logdir)) == -1)
+		link = va("%s/latest-log.txt", logdir);
 #endif/*DEFAULTDIR*/
+		unlink(link);
+		if (symlink(logfilename, link) == -1)
 		{
 			I_OutputMsg("Error symlinking latest-log.txt: %s\n", strerror(errno));
 		}