summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-11-17 23:08:55 +0000
committersmatz <smatz@openttd.org>2009-11-17 23:08:55 +0000
commit4eaa558ca119936483c55daf232ece37496eddb4 (patch)
tree4691fa6702a28c3cac0f9a2e710f9b9fe2dde670
parentd747a643cce2fbf4478d5a2d2c292607dd33f44b (diff)
downloadopenttd-4eaa558ca119936483c55daf232ece37496eddb4.tar.xz
(svn r18155) -Codechange: in MakeScreenshotName(), don't return pointer to local static variable - use global one instead
-rw-r--r--src/console_cmds.cpp2
-rw-r--r--src/screenshot.cpp10
-rw-r--r--src/screenshot.h10
3 files changed, 12 insertions, 10 deletions
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index 85cfe6199..80a0d557e 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1232,7 +1232,7 @@ DEF_CONSOLE_CMD(ConScreenShot)
/* screenshot filename */
name = argv[1];
} else {
- /* screenshot argv[1] argv[2] - invalid*/
+ /* screenshot argv[1] argv[2] - invalid */
return false;
}
}
diff --git a/src/screenshot.cpp b/src/screenshot.cpp
index 542406a0d..995fb1acf 100644
--- a/src/screenshot.cpp
+++ b/src/screenshot.cpp
@@ -27,6 +27,7 @@ char _screenshot_format_name[8];
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 @@ static const char *MakeScreenshotName(const char *ext)
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)
diff --git a/src/screenshot.h b/src/screenshot.h
index f97be75c9..410ca59a0 100644
--- a/src/screenshot.h
+++ b/src/screenshot.h
@@ -17,10 +17,11 @@ void InitializeScreenshotFormats();
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 @@ bool IsScreenshotRequested();
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 */