gdiplus: Improve GdipFillRectangles parameter validation.
This commit is contained in:
parent
ed11dc0ba3
commit
78459aea0d
@ -3747,7 +3747,7 @@ GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDI
|
|||||||
|
|
||||||
TRACE("(%p, %p, %p, %d)\n", graphics, brush, rects, count);
|
TRACE("(%p, %p, %p, %d)\n", graphics, brush, rects, count);
|
||||||
|
|
||||||
if(!rects)
|
if(!graphics || !brush || !rects || count <= 0)
|
||||||
return InvalidParameter;
|
return InvalidParameter;
|
||||||
|
|
||||||
if (graphics->image && graphics->image->type == ImageTypeMetafile)
|
if (graphics->image && graphics->image->type == ImageTypeMetafile)
|
||||||
|
@ -5493,6 +5493,52 @@ static void test_clipping_2(void)
|
|||||||
DeleteDC(hdc);
|
DeleteDC(hdc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void test_GdipFillRectangles(void)
|
||||||
|
{
|
||||||
|
GpStatus status;
|
||||||
|
GpGraphics *graphics = NULL;
|
||||||
|
GpBrush *brush = NULL;
|
||||||
|
HDC hdc = GetDC( hwnd );
|
||||||
|
GpRectF rects[2] = {{0,0,10,10}, {10,10,10,10}};
|
||||||
|
|
||||||
|
ok(hdc != NULL, "Expected HDC to be initialized\n");
|
||||||
|
|
||||||
|
status = GdipCreateFromHDC(hdc, &graphics);
|
||||||
|
expect(Ok, status);
|
||||||
|
ok(graphics != NULL, "Expected graphics to be initialized\n");
|
||||||
|
|
||||||
|
status = GdipCreateSolidFill((ARGB)0xffff00ff, (GpSolidFill**)&brush);
|
||||||
|
expect(Ok, status);
|
||||||
|
ok(brush != NULL, "Expected brush to be initialized\n");
|
||||||
|
|
||||||
|
status = GdipFillRectangles(NULL, brush, rects, 2);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipFillRectangles(graphics, NULL, rects, 2);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipFillRectangles(graphics, brush, NULL, 2);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipFillRectangles(graphics, brush, rects, 0);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipFillRectangles(graphics, brush, rects, -1);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipFillRectangles(graphics, brush, rects, 1);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
status = GdipFillRectangles(graphics, brush, rects, 2);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
GdipDeleteBrush(brush);
|
||||||
|
GdipDeleteGraphics(graphics);
|
||||||
|
|
||||||
|
ReleaseDC(hwnd, hdc);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(graphics)
|
START_TEST(graphics)
|
||||||
{
|
{
|
||||||
struct GdiplusStartupInput gdiplusStartupInput;
|
struct GdiplusStartupInput gdiplusStartupInput;
|
||||||
@ -5563,6 +5609,7 @@ START_TEST(graphics)
|
|||||||
test_getdc_scaled();
|
test_getdc_scaled();
|
||||||
test_alpha_hdc();
|
test_alpha_hdc();
|
||||||
test_bitmapfromgraphics();
|
test_bitmapfromgraphics();
|
||||||
|
test_GdipFillRectangles();
|
||||||
|
|
||||||
GdiplusShutdown(gdiplusToken);
|
GdiplusShutdown(gdiplusToken);
|
||||||
DestroyWindow( hwnd );
|
DestroyWindow( hwnd );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user