From caec1c249366723050f415d482528f444a57fdfe Mon Sep 17 00:00:00 2001 From: Bartosz Kosiorek Date: Sat, 28 Oct 2023 19:51:19 +0200 Subject: [PATCH] gdiplus: Add additional check to GdipSetPenTransform. --- dlls/gdiplus/pen.c | 6 +++++- dlls/gdiplus/tests/pen.c | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/dlls/gdiplus/pen.c b/dlls/gdiplus/pen.c index fac31d6e84e..05acd54b36d 100644 --- a/dlls/gdiplus/pen.c +++ b/dlls/gdiplus/pen.c @@ -445,8 +445,9 @@ GpStatus WINGDIPAPI GdipResetPenTransform(GpPen *pen) GpStatus WINGDIPAPI GdipSetPenTransform(GpPen *pen, GpMatrix *matrix) { static int calls; + BOOL result; - TRACE("(%p,%s)\n", pen, debugstr_matrix(matrix)); + TRACE("(%p, %s)\n", pen, debugstr_matrix(matrix)); if(!pen || !matrix) return InvalidParameter; @@ -454,6 +455,9 @@ GpStatus WINGDIPAPI GdipSetPenTransform(GpPen *pen, GpMatrix *matrix) if(!(calls++)) FIXME("(%p,%p) Semi-stub\n", pen, matrix); + GdipIsMatrixInvertible(matrix, &result); + if (!result) + return InvalidParameter; pen->transform = *matrix; return Ok; diff --git a/dlls/gdiplus/tests/pen.c b/dlls/gdiplus/tests/pen.c index 1ac74123877..445f2dbb5b8 100644 --- a/dlls/gdiplus/tests/pen.c +++ b/dlls/gdiplus/tests/pen.c @@ -472,7 +472,7 @@ static void test_transform(void) GdipCreateMatrix2(3.0, 3.0, 2.0, 2.0, 6.0, 3.0, ¬_invertible_matrix); status = GdipSetPenTransform(pen, not_invertible_matrix); - todo_wine expect(InvalidParameter, status); + expect(InvalidParameter, status); GdipDeleteMatrix(not_invertible_matrix); status = GdipGetPenTransform(pen, matrix); @@ -480,12 +480,12 @@ static void test_transform(void) status = GdipGetMatrixElements(matrix, values); expect(Ok, status); - todo_wine expectf(1.0, values[0]); - todo_wine expectf(0.0, values[1]); - todo_wine expectf(0.0, values[2]); - todo_wine expectf(1.0, values[3]); - todo_wine expectf(0.0, values[4]); - todo_wine expectf(0.0, values[5]); + expectf(1.0, values[0]); + expectf(0.0, values[1]); + expectf(0.0, values[2]); + expectf(1.0, values[3]); + expectf(0.0, values[4]); + expectf(0.0, values[5]); /* Setting Pen Tranformation to invertible matrix, should be successfull */ GdipCreateMatrix2(3.0, -2.0, 5.0, 2.0, 6.0, 3.0, &matrix2);