[Fontconfig] strange code in FcCharSetPutLeaf (spotted
by Coverity)
Patrick Lam
plam at MIT.EDU
Tue Apr 11 07:21:14 PDT 2006
Frederic Crozat wrote:
> Coverity found two memory leaks in fccharset.c : FcCharSetPutLeaf (#1192
> and #1193) in the "if (fcs->bank != FC_BANK_DYNAMIC)" TRUE branch :
> leaves and numbers. But after reading this part of the code, I'm not
> sure if it is doing anything at all : memory is allocated for leaves and
> numbers but those variables are not used at all after "if () {} else {}"
> stuff, so they are leaked and not used at all..
>
> Could somebody with much more knowledge of this code check it ?
Oops! I meant to do this:
Index: src/fccharset.c
===================================================================
RCS file: /cvs/fontconfig/fontconfig/src/fccharset.c,v
retrieving revision 1.25.4.13
diff -u -p -r1.25.4.13 fccharset.c
--- src/fccharset.c 7 Apr 2006 17:27:39 -0000 1.25.4.13
+++ src/fccharset.c 11 Apr 2006 14:18:55 -0000
@@ -168,6 +168,7 @@ FcCharSetPutLeaf (FcCharSet *fcs,
return FcFalse;
if (fcs->bank != FC_BANK_DYNAMIC)
{
+ /* convert to dynamic */
int i;
leaves = malloc ((fcs->num + 1) * sizeof (FcCharLeaf *));
@@ -183,6 +184,10 @@ FcCharSetPutLeaf (FcCharSet *fcs,
leaves[i] = FcCharSetGetLeaf(fcs, i);
memcpy (numbers, FcCharSetGetNumbers(fcs),
fcs->num * sizeof (FcChar16));
+
+ fcs->bank = FC_BANK_DYNAMIC;
+ fcs->u.dyn.leaves = leaves;
+ fcs->u.dyn.numbers = numbers;
}
else
{
I've committed all of your patches as well as this one.
pat
More information about the Fontconfig
mailing list