From 69e17d6a6a879aaf1b3bafe87d3fe3b99c8f3feb Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Wed, 3 Sep 2008 00:25:39 +0400 Subject: [PATCH] gdiplus: GdipGetLineGammaCorrection should check result pointer. Test added. --- dlls/gdiplus/brush.c | 2 +- dlls/gdiplus/tests/brush.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c index b8c5870d061..8bb807b3609 100644 --- a/dlls/gdiplus/brush.c +++ b/dlls/gdiplus/brush.c @@ -631,7 +631,7 @@ GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient *line, { TRACE("(%p, %p)\n", line, usinggamma); - if(!line) + if(!line || !usinggamma) return InvalidParameter; *usinggamma = line->gamma; diff --git a/dlls/gdiplus/tests/brush.c b/dlls/gdiplus/tests/brush.c index 6711fe48c47..c9f98260907 100644 --- a/dlls/gdiplus/tests/brush.c +++ b/dlls/gdiplus/tests/brush.c @@ -145,6 +145,30 @@ static void test_getbounds(void) GdipDeleteBrush((GpBrush*) brush); } +static void test_getgamma(void) +{ + GpStatus status; + GpLineGradient *line; + GpPointF start, end; + BOOL gamma; + + start.X = start.Y = 0.0; + end.X = end.Y = 100.0; + + status = GdipCreateLineBrush(&start, &end, (ARGB)0xdeadbeef, 0xdeadbeef, WrapModeTile, &line); + expect(Ok, status); + + /* NULL arguments */ + status = GdipGetLineGammaCorrection(NULL, NULL); + expect(InvalidParameter, status); + status = GdipGetLineGammaCorrection(line, NULL); + expect(InvalidParameter, status); + status = GdipGetLineGammaCorrection(NULL, &gamma); + expect(InvalidParameter, status); + + GdipDeleteBrush((GpBrush*)line); +} + START_TEST(brush) { struct GdiplusStartupInput gdiplusStartupInput; @@ -162,6 +186,7 @@ START_TEST(brush) test_gradientblendcount(); test_getblend(); test_getbounds(); + test_getgamma(); GdiplusShutdown(gdiplusToken); }