[1/2] gdiplus: Add error checking to GdipClonePen.
Vincent Povirk
madewokherd at gmail.com
Wed Aug 14 16:39:56 CDT 2013
-------------- next part --------------
From 373d6f6e1e2464df61975f3f8dfa98667d7dd9d0 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Wed, 14 Aug 2013 16:34:25 -0500
Subject: [PATCH 1/2] gdiplus: Add error checking to GdipClonePen.
---
dlls/gdiplus/pen.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/gdiplus/pen.c b/dlls/gdiplus/pen.c
index a022cfb..80ede40 100644
--- a/dlls/gdiplus/pen.c
+++ b/dlls/gdiplus/pen.c
@@ -87,6 +87,8 @@ static GpPenType bt_to_pt(GpBrushType bt)
GpStatus WINGDIPAPI GdipClonePen(GpPen *pen, GpPen **clonepen)
{
+ GpStatus stat;
+
TRACE("(%p, %p)\n", pen, clonepen);
if(!pen || !clonepen)
@@ -97,9 +99,24 @@ GpStatus WINGDIPAPI GdipClonePen(GpPen *pen, GpPen **clonepen)
**clonepen = *pen;
- GdipCloneCustomLineCap(pen->customstart, &(*clonepen)->customstart);
- GdipCloneCustomLineCap(pen->customend, &(*clonepen)->customend);
- GdipCloneBrush(pen->brush, &(*clonepen)->brush);
+ (*clonepen)->customstart = NULL;
+ (*clonepen)->customend = NULL;
+ (*clonepen)->brush = NULL;
+
+ stat = GdipCloneBrush(pen->brush, &(*clonepen)->brush);
+
+ if (stat == Ok && pen->customstart)
+ stat = GdipCloneCustomLineCap(pen->customstart, &(*clonepen)->customstart);
+
+ if (stat == Ok && pen->customend)
+ stat = GdipCloneCustomLineCap(pen->customend, &(*clonepen)->customend);
+
+ if (stat != Ok)
+ {
+ GdipDeletePen(*clonepen);
+ *clonepen = NULL;
+ return stat;
+ }
TRACE("<-- %p\n", *clonepen);
--
1.8.1.2
More information about the wine-patches
mailing list