]> git.wh0rd.org - fontconfig.git/commitdiff
Expression parsing in fonts.conf file mis-freed elements. Constant identity
authorKeith Packard <keithp@keithp.com>
Sun, 2 Jun 2002 19:51:36 +0000 (19:51 +0000)
committerKeith Packard <keithp@keithp.com>
Sun, 2 Jun 2002 19:51:36 +0000 (19:51 +0000)
    matrix was accidentally freed. Add ability to comare FTFace pattern
    elements (not that its all that useful)

src/fccfg.c
src/fcxml.c

index edb6df30e42bf39fe98027059b1dc28ca3906c59..65a5728b7fbc375fa9a47f8df68176e0174e3485 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fccfg.c,v 1.6 2002/05/21 17:06:22 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fccfg.c,v 1.7 2002/05/29 08:21:33 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -471,8 +471,9 @@ FcConfigPromote (FcValue v, FcValue u)
     }
     else if (v.type == FcTypeVoid && u.type == FcTypeMatrix)
     {
-       v.u.m = (FcMatrix *) &FcIdentityMatrix;
-       v.type = FcTypeMatrix;
+       v.u.m = FcMatrixCopy (&FcIdentityMatrix);
+       if (v.u.m)
+           v.type = FcTypeMatrix;
     }
     return v;
 }
@@ -582,6 +583,17 @@ FcConfigCompareValue (FcValue      m,
                break;
            }
            break;
+       case FcTypeFTFace:
+           switch (op) {
+           case FcOpEqual:
+               ret = m.u.f == v.u.f;
+               break;
+           case FcOpNotEqual:
+               ret = m.u.f != v.u.f;
+               break;
+           default:
+               break;
+           }
        }
     }
     else
index 1aa282de130b376054c51ccabd538048e59d1808..09aa79ebaaed79f86984720bafdbe3a2858e5fa3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcxml.c,v 1.7 2002/05/21 17:06:22 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcxml.c,v 1.8 2002/05/22 04:12:35 keithp Exp $
  *
  * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -1188,6 +1188,7 @@ FcPopExpr (FcConfigParse *parse)
        break;
     case FcVStackExpr:
        expr = vstack->u.expr;
+       vstack->tag = FcVStackNone;
        break;
     case FcVStackEdit:
        break;
@@ -1377,7 +1378,7 @@ FcParseEdit (FcConfigParse *parse)
     }
     mode_string = FcConfigGetAttribute (parse, "mode");
     if (!mode_string)
-       mode = FcOpEqual;
+       mode = FcOpAssign;
     else
     {
        mode = FcConfigLexMode (mode_string);