[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