changeset 13631:9d22db56efe5 draft

(svn r18155) -Codechange: in MakeScreenshotName(), don't return pointer to local static variable - use global one instead
author smatz <smatz@openttd.org>
date Tue, 17 Nov 2009 23:08:55 +0000
parents 40489a4d0822
children 26e73974b916
files src/console_cmds.cpp src/screenshot.cpp src/screenshot.h
diffstat 3 files changed, 12 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1232,7 +1232,7 @@
 			/* screenshot filename */
 			name = argv[1];
 		} else {
-			/* screenshot argv[1] argv[2] - invalid*/
+			/* screenshot argv[1] argv[2] - invalid */
 			return false;
 		}
 	}
--- a/src/screenshot.cpp
+++ b/src/screenshot.cpp
@@ -27,6 +27,7 @@
 uint _num_screenshot_formats;
 uint _cur_screenshot_format;
 char _screenshot_name[128];
+char _full_screenshot_name[MAX_PATH];
 static ScreenshotType _screenshot_type;
 
 /* called by the ScreenShot proc to generate screenshot lines. */
@@ -585,20 +586,19 @@
 	size_t len = strlen(_screenshot_name);
 	snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, ".%s", ext);
 
-	static char filename[MAX_PATH];
 	for (uint serial = 1;; serial++) {
-		if (snprintf(filename, lengthof(filename), "%s%s", _personal_dir, _screenshot_name) >= (int)lengthof(filename)) {
+		if (snprintf(_full_screenshot_name, lengthof(_full_screenshot_name), "%s%s", _personal_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) {
 			/* We need more characters than MAX_PATH -> end with error */
-			filename[0] = '\0';
+			_full_screenshot_name[0] = '\0';
 			break;
 		}
 		if (!generate) break; // allow overwriting of non-automatic filenames
-		if (!FileExists(filename)) break;
+		if (!FileExists(_full_screenshot_name)) break;
 		/* If file exists try another one with same name, but just with a higher index */
 		snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, "#%u.%s", serial, ext);
 	}
 
-	return filename;
+	return _full_screenshot_name;
 }
 
 void RequestScreenshot(ScreenshotType t, const char *name)
--- a/src/screenshot.h
+++ b/src/screenshot.h
@@ -17,10 +17,11 @@
 const char *GetScreenshotFormatDesc(int i);
 void SetScreenshotFormat(int i);
 
+/** Type of requested screenshot */
 enum ScreenshotType {
-	SC_NONE,
-	SC_VIEWPORT,
-	SC_WORLD
+	SC_NONE,     ///< No screenshot requested
+	SC_VIEWPORT, ///< Screenshot of viewport
+	SC_WORLD,    ///< World screenshot
 };
 
 bool MakeScreenshot();
@@ -30,6 +31,7 @@
 extern char _screenshot_format_name[8];
 extern uint _num_screenshot_formats;
 extern uint _cur_screenshot_format;
-extern char _screenshot_name[];
+extern char _screenshot_name[128];
+extern char _full_screenshot_name[MAX_PATH];
 
 #endif /* SCREENSHOT_H */