Index: screenshot.c
===================================================================
--- screenshot.c	(revision 808)
+++ screenshot.c	(working copy)
@@ -418,25 +418,25 @@
 
 static char *MakeScreenshotName(const char *ext)
 {
-	char *filename = _screenshot_name;
+	static char filename[256];
 	char *base;
 	int serial;
 
 	if (_game_mode == GM_EDITOR || _local_player == 0xff) {
-		filename = str_fmt("%sscreenshot", _path.personal_dir);
-		base = filename + strlen(filename);
+		sprintf(_screenshot_name, "screenshot");
 	} else {
 		Player *p = &_players[_local_player];
 		SET_DPARAM16(0, p->name_1);
 		SET_DPARAM32(1, p->name_2);
 		SET_DPARAM16(2, _date);
-		GetString(filename, STR_4004);
-		filename = str_fmt("%s%s", _path.personal_dir, filename );
-		base = filename + strlen(filename);
+		GetString(_screenshot_name, STR_4004);
 	}
 
-	base[0] = '.';strcpy(base + 1, ext);
+	base = _screenshot_name + strlen(_screenshot_name);
+	base[0] = '.'; strcpy(base + 1, ext);
 
+	snprintf(filename, 256, "%s%s", _path.personal_dir, _screenshot_name);
+
 	serial = 0;
 	while (FileExists(filename)) {
 		sprintf(base, " #%d.%s", ++serial, ext);
