gdiplus: Return correct status code if GdipAlloc fails.
Dmitry Timoshkov
dmitry at baikal.ru
Wed May 23 23:48:30 CDT 2012
---
dlls/gdiplus/region.c | 52 ++++++++++++++++++++++++-------------------------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/dlls/gdiplus/region.c b/dlls/gdiplus/region.c
index 485c3a3..ad8ab79 100644
--- a/dlls/gdiplus/region.c
+++ b/dlls/gdiplus/region.c
@@ -254,20 +254,20 @@ GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *region, GpPath *path, Combin
}
left = GdipAlloc(sizeof(region_element));
- if (!left)
- goto out;
- *left = region->node;
-
- stat = clone_element(&path_region->node, &right);
- if (stat != Ok)
- goto out;
-
- fuse_region(region, left, right, mode);
-
- GdipDeleteRegion(path_region);
- return Ok;
+ if (left)
+ {
+ *left = region->node;
+ stat = clone_element(&path_region->node, &right);
+ if (stat == Ok)
+ {
+ fuse_region(region, left, right, mode);
+ GdipDeleteRegion(path_region);
+ return Ok;
+ }
+ }
+ else
+ stat = OutOfMemory;
-out:
GdipFree(left);
GdipDeleteRegion(path_region);
return stat;
@@ -301,20 +301,20 @@ GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *region,
}
left = GdipAlloc(sizeof(region_element));
- if (!left)
- goto out;
- memcpy(left, ®ion->node, sizeof(region_element));
-
- stat = clone_element(&rect_region->node, &right);
- if (stat != Ok)
- goto out;
-
- fuse_region(region, left, right, mode);
-
- GdipDeleteRegion(rect_region);
- return Ok;
+ if (left)
+ {
+ memcpy(left, ®ion->node, sizeof(region_element));
+ stat = clone_element(&rect_region->node, &right);
+ if (stat == Ok)
+ {
+ fuse_region(region, left, right, mode);
+ GdipDeleteRegion(rect_region);
+ return Ok;
+ }
+ }
+ else
+ stat = OutOfMemory;
-out:
GdipFree(left);
GdipDeleteRegion(rect_region);
return stat;
--
1.7.10.1
More information about the wine-patches
mailing list