Don't use FcCharSetCopy in FcCharSetMerge

The Copy function is actually a ref, not real copy.
This commit is contained in:
Behdad Esfahbod 2009-01-08 03:04:34 -05:00
parent d230cf144f
commit 25a09eb9bf
2 changed files with 5 additions and 4 deletions

View File

@ -104,7 +104,7 @@ Returns a set including only those chars found in <parameter>a</parameter> but n
@TYPE2@ const FcCharSet * @ARG2@ b @TYPE2@ const FcCharSet * @ARG2@ b
@PURPOSE@ Merge charsets @PURPOSE@ Merge charsets
@DESC@ @DESC@
If <parameter>a</parameter> is NULL, returns a copy of <parameter>b</parameter>. If <parameter>a</parameter> is NULL, returns a newly-created copy of <parameter>b</parameter>.
If <parameter>a</parameter> is an FcCharSet object owned by fontconfig that If <parameter>a</parameter> is an FcCharSet object owned by fontconfig that
cannot be modified, it returns the union of <parameter>a</parameter> and cannot be modified, it returns the union of <parameter>a</parameter> and
<parameter>b</parameter> in a newly-created FcCharSet object. <parameter>b</parameter> in a newly-created FcCharSet object.

View File

@ -459,14 +459,15 @@ FcCharSetMerge (FcCharSet *a, const FcCharSet *b)
FcCharSetIter ai, bi; FcCharSetIter ai, bi;
if (a == NULL) { if (a == NULL) {
return FcCharSetCopy ((FcCharSet *) b); fcs = a = FcCharSetCreate ();
} else if (a->ref == FC_REF_CONSTANT) { } else if (a->ref == FC_REF_CONSTANT) {
fcs = FcCharSetCreate (); fcs = FcCharSetCreate ();
if (fcs == NULL)
return NULL;
} else } else
fcs = a; fcs = a;
if (fcs == NULL)
return NULL;
FcCharSetIterStart (a, &ai); FcCharSetIterStart (a, &ai);
FcCharSetIterStart (b, &bi); FcCharSetIterStart (b, &bi);
while (ai.leaf || bi.leaf) while (ai.leaf || bi.leaf)