diff options
-rw-r--r-- | doc/fccharset.fncs | 2 | ||||
-rw-r--r-- | src/fccharset.c | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/doc/fccharset.fncs b/doc/fccharset.fncs index 93e1f5c..0dd7d1a 100644 --- a/doc/fccharset.fncs +++ b/doc/fccharset.fncs @@ -104,7 +104,7 @@ Returns a set including only those chars found in <parameter>a</parameter> but n @TYPE2@ const FcCharSet * @ARG2@ b @PURPOSE@ Merge charsets @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 cannot be modified, it returns the union of <parameter>a</parameter> and <parameter>b</parameter> in a newly-created FcCharSet object. diff --git a/src/fccharset.c b/src/fccharset.c index 1891f08..2daa39d 100644 --- a/src/fccharset.c +++ b/src/fccharset.c @@ -459,14 +459,15 @@ FcCharSetMerge (FcCharSet *a, const FcCharSet *b) FcCharSetIter ai, bi; if (a == NULL) { - return FcCharSetCopy ((FcCharSet *) b); + fcs = a = FcCharSetCreate (); } else if (a->ref == FC_REF_CONSTANT) { fcs = FcCharSetCreate (); - if (fcs == NULL) - return NULL; } else fcs = a; + if (fcs == NULL) + return NULL; + FcCharSetIterStart (a, &ai); FcCharSetIterStart (b, &bi); while (ai.leaf || bi.leaf) |