X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcpat.c;h=bf34c2e2c4c1869f6c12303792a4f065e60e17e1;hb=766a9b2f61458202be0fbf5745ce1e02ecd95c6e;hp=bc0bab7460f062f04b928b24e3fbd22535753b76;hpb=09f9f6f62ac94f7b1a6df649a00c64f78ab132f5;p=fontconfig.git diff --git a/src/fcpat.c b/src/fcpat.c index bc0bab7..bf34c2e 100644 --- a/src/fcpat.c +++ b/src/fcpat.c @@ -282,7 +282,13 @@ FcPatternDestroy (FcPattern *p) int i; FcPatternElt *elts; - if (p->ref == FC_REF_CONSTANT || --p->ref > 0) + if (p->ref == FC_REF_CONSTANT) + { + FcCacheObjectDereference (p); + return; + } + + if (--p->ref > 0) return; elts = FcPatternElts (p); @@ -491,7 +497,15 @@ FcPatternObjectAddWithBinding (FcPattern *p, * Make sure the stored type is valid for built-in objects */ if (!FcObjectValidType (object, value.type)) + { + if (FcDebug() & FC_DBG_OBJTYPES) + { + printf ("FcPattern object %s does not accept value ", + FcObjectName (object)); + FcValuePrint (value); + } goto bail1; + } new->value = value; new->binding = binding; @@ -930,6 +944,8 @@ FcPatternReference (FcPattern *p) { if (p->ref != FC_REF_CONSTANT) p->ref++; + else + FcCacheObjectReference (p); } FcPattern * @@ -1187,7 +1203,11 @@ FcValueListSerialize (FcSerialize *serialize, const FcValueList *vl) default: break; } + prev_serialized = vl_serialized; vl = vl->next; } return head_serialized; } +#define __fcpat__ +#include "fcaliastail.h" +#undef __fcpat__