From 4eaa558ca119936483c55daf232ece37496eddb4 Mon Sep 17 00:00:00 2001 From: smatz Date: Tue, 17 Nov 2009 23:08:55 +0000 Subject: (svn r18155) -Codechange: in MakeScreenshotName(), don't return pointer to local static variable - use global one instead --- src/console_cmds.cpp | 2 +- src/screenshot.cpp | 10 +++++----- src/screenshot.h | 10 ++++++---- 3 files changed, 12 insertions(+), 10 deletions(-) (limited to 'src') 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 */ -- cgit v1.2.3-54-g00ecf