]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcpat.c
Fix memory leak (Coverity defect #2089).
[fontconfig.git] / src / fcpat.c
index 5865546ca21995d92b0f646f5c736649b097db90..658998bd891960ef1db44a155c7ed33e594292ef 100644 (file)
@@ -639,7 +639,7 @@ FcPatternBaseThawAll (void)
 FcPattern *
 FcPatternFreeze (FcPattern *p)
 {
-    FcPattern  *b, *n = 0;
+    FcPattern  *b, *n = 0, *freeme = 0;
     FcPatternElt *e;
     int                i;
     
@@ -673,7 +673,10 @@ FcPatternFreeze (FcPattern *p)
        (FcPatternEltU(b->elts)+i)->values = 
            FcValueListFreeze((FcPatternEltU(p->elts)+i)->values);
        if (!FcValueListPtrU((FcPatternEltU(p->elts)+i)->values))
+        {
+           freeme = b;
            goto bail;
+        }
     }
 
     if (FcPatternFindElt (p, FC_FILE))
@@ -695,6 +698,8 @@ FcPatternFreeze (FcPattern *p)
     b->elts = FcPatternEltPtrCreateDynamic(0);
     FcMemFree (FC_MEM_PATELT, sizeof (FcPatternElt)*(b->num));
     b->num = -1;
+    if (freeme)
+       FcPatternDestroy (freeme);
 #ifdef DEBUG
     assert (FcPatternEqual (n, p));
 #endif