Alex Henrie : win32u: Fix memory leak on error path in PATH_WidenPath (cppcheck).

Alexandre Julliard julliard at winehq.org
Mon Dec 20 15:42:39 CST 2021


Module: wine
Branch: master
Commit: d45d54ef181289e0bdc53a9f5981625982c99a11
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=d45d54ef181289e0bdc53a9f5981625982c99a11

Author: Alex Henrie <alexhenrie24 at gmail.com>
Date:   Mon Dec 20 07:43:24 2021 +0000

win32u: Fix memory leak on error path in PATH_WidenPath (cppcheck).

Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/win32u/path.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/dlls/win32u/path.c b/dlls/win32u/path.c
index 05123a2f2e4..a87a7ab06c2 100644
--- a/dlls/win32u/path.c
+++ b/dlls/win32u/path.c
@@ -1616,7 +1616,7 @@ BOOL WINAPI NtGdiFlattenPath( HDC hdc )
 static struct gdi_path *PATH_WidenPath(DC *dc)
 {
     INT i, j, numStrokes, penWidth, penWidthIn, penWidthOut, size, penStyle;
-    struct gdi_path *flat_path, *pNewPath, **pStrokes = NULL, *pUpPath, *pDownPath;
+    struct gdi_path *flat_path, *pNewPath, **pStrokes = NULL, **new_strokes, *pUpPath, *pDownPath;
     EXTLOGPEN *elp;
     BYTE *type;
     DWORD obj_type, joint, endcap, penType;
@@ -1681,12 +1681,14 @@ static struct gdi_path *PATH_WidenPath(DC *dc)
             case PT_MOVETO:
                 numStrokes++;
                 j = 0;
-                pStrokes = realloc( pStrokes, numStrokes * sizeof(*pStrokes) );
-                if(!pStrokes)
+                new_strokes = realloc( pStrokes, numStrokes * sizeof(*pStrokes) );
+                if (!new_strokes)
                 {
                     free_gdi_path(flat_path);
+                    free(pStrokes);
                     return NULL;
                 }
+                pStrokes = new_strokes;
                 pStrokes[numStrokes - 1] = alloc_gdi_path(0);
                 /* fall through */
             case PT_LINETO:




More information about the wine-cvs mailing list