[Libreoffice] [PATCH] Simple fix for fontconfig.cxx to review (from cppcheck report)

Mat M matm at gmx.fr
Sat Jan 14 15:29:49 PST 2012


Hello

Le Sat, 14 Jan 2012 16:00:31 +0100, julien2412 <serval2412 at yahoo.fr> a  
écrit:

> Hello,
>
> cppcheck reported this :
> core/vcl/generic/fontmanager/fontconfig.cxx
> 196	duplicateExpression	style	Same expression on both sides of '-'
>
>    class SortFont : public ::std::binary_function< const FcPattern*,  
> const
> FcPattern*, bool >
>     {
>     public:
>         bool operator()(const FcPattern *a, const FcPattern *b)
>         {
>             int comp = compareFontNames(a, b);
>             if (comp != 0)
>                 return comp < 0;
>
>             int nVersionA=0, nVersionB=0;
>
>             bool bHaveA = FcPatternGetInteger(a, FC_FONTVERSION, 0,
> &nVersionA) == FcResultMatch;
>             bool bHaveB = FcPatternGetInteger(b, FC_FONTVERSION, 0,
> &nVersionB) == FcResultMatch;
>
>             if (bHaveA && bHaveB)
>                 return nVersionA > nVersionB;
>
>  196:           return bHaveA - bHaveA;<--- Same expression on both  
> sides of
> '-'.
>         }
>     };
>
> If we follow the same logic as the function compareFontNames defined some
> lines above in the same file :
>     int compareFontNames(const FcPattern *a, const FcPattern *b)
>     {
>         FcChar8 *pNameA=NULL, *pNameB=NULL;
>
>         bool bHaveA = FcPatternGetString(a, FC_FAMILY, 0, &pNameA) ==
> FcResultMatch;
>         bool bHaveB = FcPatternGetString(b, FC_FAMILY, 0, &pNameB) ==
> FcResultMatch;
>
>         if (bHaveA && bHaveB)
>             return strcmp((const char*)pNameA, (const char*)pNameB);
>
>         return bHaveA - bHaveB;
>     }
>
> it seems it should be :
> return bHaveA - bHaveB;
>
> Any idea ?
>
Subtracting booleans ??? Is there some magic here ?
Moreover, if we state that boolean difference returns a boolean, is there  
an automatic cast, as the function should return an int ?
IF we can state that doing the subtract, true = 1, false = 0 and operation  
will send back an integer, then your proposal is ok. Still, not trivial.

Regards

--
Mat M


More information about the LibreOffice mailing list