Don't make FcPatternFindFullFname available to fccfg, it's not really safe.

Instead go through FcPatternGetString (sorry, perf guys.) Also, use
    globs for dirs as well.
This commit is contained in:
Patrick Lam 2005-11-29 06:09:18 +00:00
parent e0421d0289
commit 51af050992
4 changed files with 18 additions and 7 deletions

View File

@ -1,3 +1,12 @@
2005-11-29 Patrick Lam <plam@mit.edu>
* src/fccfg.c (FcConfigBuildFonts):
* src/fcint.h:
* src/fcpat.c (FcPatternFindFullFname):
Don't make FcPatternFindFullFname available to fccfg, it's not
really safe. Instead go through FcPatternGetString (sorry,
perf guys.) Also, use globs for dirs as well.
2005-11-28 Patrick Lam <plam@mit.edu>
* src/fccfg.c (FcConfigBuildFonts):

View File

@ -308,11 +308,13 @@ FcConfigBuildFonts (FcConfig *config)
for (i = 0; i < cached_fonts->nfont; i++)
{
const char * cfn = (FcChar8 *)FcPatternFindFullFname
(cached_fonts->fonts[i]);
FcChar8 *cfn, *cfd;
FcPatternGetString (cached_fonts->fonts[i], FC_FILE, 0, &cfn);
cfd = (FcChar8 *)FcCacheFindBankDir (cached_fonts->fonts[i]->bank);
if (FcConfigAcceptFont (config, cached_fonts->fonts[i]) &&
(cfn && FcConfigAcceptFilename (config, cfn)))
(cfn && FcConfigAcceptFilename (config, cfn)) &&
(cfd && FcConfigAcceptFilename (config, cfd)))
FcFontSetAdd (fonts, cached_fonts->fonts[i]);
cached_fonts->fonts[i] = 0; /* prevent free in FcFontSetDestroy */

View File

@ -848,9 +848,6 @@ FcPatternAppend (FcPattern *p, FcPattern *s);
void
FcPatternAddFullFname (const FcPattern *p, const char *fname);
const char *
FcPatternFindFullFname (const FcPattern *p);
void
FcPatternTransferFullFname (const FcPattern *new, const FcPattern *orig);

View File

@ -37,6 +37,9 @@ static int fcvaluelist_bank_count = 0, fcvaluelist_ptr, fcvaluelist_count;
static FcPatternEltPtr
FcPatternEltPtrCreateDynamic (FcPatternElt * e);
static const char *
FcPatternFindFullFname (const FcPattern *p);
/* If you are trying to duplicate an FcPattern which will be used for
* rendering, be aware that (internally) you also have to use
* FcPatternTransferFullFname to transfer the associated filename. If
@ -2014,7 +2017,7 @@ FcPatternAddFullFname (const FcPattern *p, const char *fname)
pb->next->m.fname = fname;
}
const char *
static const char *
FcPatternFindFullFname (const FcPattern *p)
{
struct patternDirBucket *pb;