[aseprite] 64/308: Check GlobalAlloc() return value in set_win32_clipboard_bitmap()
Tobias Hansen
thansen at moszumanska.debian.org
Tue Mar 8 02:44:52 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 44258a84427cc4c99b92df7e4d8b0cd63fb0c892
Author: David Capello <davidcapello at gmail.com>
Date: Mon Dec 7 17:29:22 2015 -0300
Check GlobalAlloc() return value in set_win32_clipboard_bitmap()
---
src/app/util/clipboard_win32.h | 34 ++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/src/app/util/clipboard_win32.h b/src/app/util/clipboard_win32.h
index de99661..2cbcbc0 100644
--- a/src/app/util/clipboard_win32.h
+++ b/src/app/util/clipboard_win32.h
@@ -95,18 +95,22 @@ static void set_win32_clipboard_bitmap(const Image* image, const Mask* mask, Pal
if (mask) doc::write_mask(os, mask);
if (palette) doc::write_palette(os, palette);
- size_t size = (size_t)os.tellp();
-
- HGLOBAL hmem = GlobalAlloc(GHND, size+4);
- char* p = (char*)GlobalLock(hmem);
-
- *((uint32_t*)p) = size;
- os.seekp(0);
- os.read(p+4, size);
-
- GlobalUnlock(hmem);
- SetClipboardData(custom_clipboard_format, hmem);
- GlobalFree(hmem);
+ if (os.good()) {
+ size_t size = (size_t)os.tellp();
+ HGLOBAL hmem = GlobalAlloc(GHND, size+4);
+ if (hmem) {
+ char* p = (char*)GlobalLock(hmem);
+ if (p) {
+ *((uint32_t*)p) = size;
+ os.seekp(0);
+ os.read(p+4, size);
+ }
+ GlobalUnlock(hmem);
+ if (p)
+ SetClipboardData(custom_clipboard_format, hmem);
+ GlobalFree(hmem);
+ }
+ }
}
// information to create the memory necessary for the bitmap
@@ -141,6 +145,12 @@ static void set_win32_clipboard_bitmap(const Image* image, const Mask* mask, Pal
sizeof(BITMAPV5HEADER)
+ palette_entries*sizeof(RGBQUAD)
+ scanline*image->height());
+ if (!hmem) {
+ // TODO cannot copy exception
+ CloseClipboard();
+ return;
+ }
+
BITMAPV5HEADER* bi = (BITMAPV5HEADER*)GlobalLock(hmem);
bi->bV5Size = sizeof(BITMAPV5HEADER);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list