Expression parsing in fonts.conf file mis-freed elements. Constant identity
matrix was accidentally freed. Add ability to comare FTFace pattern elements (not that its all that useful)
This commit is contained in:
parent
be0948508c
commit
8ec077f22b
18
src/fccfg.c
18
src/fccfg.c
|
@ -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.
|
* 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)
|
else if (v.type == FcTypeVoid && u.type == FcTypeMatrix)
|
||||||
{
|
{
|
||||||
v.u.m = (FcMatrix *) &FcIdentityMatrix;
|
v.u.m = FcMatrixCopy (&FcIdentityMatrix);
|
||||||
v.type = FcTypeMatrix;
|
if (v.u.m)
|
||||||
|
v.type = FcTypeMatrix;
|
||||||
}
|
}
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
@ -582,6 +583,17 @@ FcConfigCompareValue (FcValue m,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
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
|
else
|
||||||
|
|
|
@ -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.
|
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
|
||||||
*
|
*
|
||||||
|
@ -1188,6 +1188,7 @@ FcPopExpr (FcConfigParse *parse)
|
||||||
break;
|
break;
|
||||||
case FcVStackExpr:
|
case FcVStackExpr:
|
||||||
expr = vstack->u.expr;
|
expr = vstack->u.expr;
|
||||||
|
vstack->tag = FcVStackNone;
|
||||||
break;
|
break;
|
||||||
case FcVStackEdit:
|
case FcVStackEdit:
|
||||||
break;
|
break;
|
||||||
|
@ -1377,7 +1378,7 @@ FcParseEdit (FcConfigParse *parse)
|
||||||
}
|
}
|
||||||
mode_string = FcConfigGetAttribute (parse, "mode");
|
mode_string = FcConfigGetAttribute (parse, "mode");
|
||||||
if (!mode_string)
|
if (!mode_string)
|
||||||
mode = FcOpEqual;
|
mode = FcOpAssign;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mode = FcConfigLexMode (mode_string);
|
mode = FcConfigLexMode (mode_string);
|
||||||
|
|
Loading…
Reference in New Issue