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);
* 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;
{
if (p->ref != FC_REF_CONSTANT)
p->ref++;
+ else
+ FcCacheObjectReference (p);
}
FcPattern *
FcPatternFini (void)
{
FcStrStaticNameFini ();
- FcObjectStaticNameFini ();
+ FcObjectFini ();
}
FcBool
values_serialized,
FcValueList);
}
+ if (FcDebug() & FC_DBG_CACHEV) {
+ printf ("Raw pattern:\n");
+ FcPatternPrint (pat);
+ printf ("Serialized pattern:\n");
+ FcPatternPrint (pat_serialized);
+ printf ("\n");
+ }
return pat_serialized;
}
default:
break;
}
+ prev_serialized = vl_serialized;
vl = vl->next;
}
return head_serialized;
}
+#define __fcpat__
+#include "fcaliastail.h"
+#undef __fcpat__