summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/fccharset.fncs2
-rw-r--r--src/fccharset.c7
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)