diff options
author | smatz <smatz@openttd.org> | 2009-11-01 20:40:36 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2009-11-01 20:40:36 +0000 |
commit | d87c032e521a5f3f6caff94e519670d9d2b7ce2c (patch) | |
tree | 8d8e61564c1211a4ae44f4301cd7c92a2766cf17 /src/screenshot.cpp | |
parent | df8c655ee66ee2efcb46327cfd2f8c66cc47a3c5 (diff) | |
download | openttd-d87c032e521a5f3f6caff94e519670d9d2b7ce2c.tar.xz |
(svn r17941) -Fix: close BMP file when making screenshot fails
Diffstat (limited to 'src/screenshot.cpp')
-rw-r--r-- | src/screenshot.cpp | 13 |
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) |