summaryrefslogtreecommitdiff
path: root/src/screenshot.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-11-01 20:40:36 +0000
committersmatz <smatz@openttd.org>2009-11-01 20:40:36 +0000
commitd87c032e521a5f3f6caff94e519670d9d2b7ce2c (patch)
tree8d8e61564c1211a4ae44f4301cd7c92a2766cf17 /src/screenshot.cpp
parentdf8c655ee66ee2efcb46327cfd2f8c66cc47a3c5 (diff)
downloadopenttd-d87c032e521a5f3f6caff94e519670d9d2b7ce2c.tar.xz
(svn r17941) -Fix: close BMP file when making screenshot fails
Diffstat (limited to 'src/screenshot.cpp')
-rw-r--r--src/screenshot.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/screenshot.cpp b/src/screenshot.cpp
index 283bd882f..87951c91a 100644
--- a/src/screenshot.cpp
+++ b/src/screenshot.cpp
@@ -125,9 +125,14 @@ static bool MakeBmpImage(char *name, ScreenshotCallback *callb, void *userdata,
}
/* write file header and info header and palette */
- if (fwrite(&bfh, sizeof(bfh), 1, f) != 1) return false;
- if (fwrite(&bih, sizeof(bih), 1, f) != 1) return false;
- if (pixelformat == 8) if (fwrite(rq, sizeof(rq), 1, f) != 1) return false;
+ if (fwrite(&bfh, sizeof(bfh), 1, f) != 1 || fwrite(&bih, sizeof(bih), 1, f) != 1) {
+ fclose(f);
+ return false;
+ }
+ if (pixelformat == 8 && fwrite(rq, sizeof(rq), 1, f) != 1) {
+ fclose(f);
+ return false;
+ }
/* use by default 64k temp memory */
maxlines = Clamp(65536 / padw, 16, 128);
@@ -151,7 +156,7 @@ static bool MakeBmpImage(char *name, ScreenshotCallback *callb, void *userdata,
uint32 *buff32 = (uint32 *)buff;
for (i = 0; i < padw * n; i++) buff32[i] = BSWAP32(buff32[i]);
}
-#endif
+#endif /* TTD_ENDIAN == TTD_BIG_ENDIAN */
/* write each line */
while (n)