+++ /dev/null
---- fontconfig/src/fcint.h.subdir Sat Aug 31 18:17:32 2002
-+++ fontconfig/src/fcint.h Mon Sep 9 15:09:41 2002
-@@ -238,18 +238,20 @@
- FcChar8 *name;
- } FcGlobalCacheFile;
-
-+typedef struct _FcGlobalCacheDir FcGlobalCacheDir;
-+
- typedef struct _FcGlobalCacheSubdir {
- struct _FcGlobalCacheSubdir *next;
-- FcChar8 *file;
-+ FcGlobalCacheDir *ent;
- } FcGlobalCacheSubdir;
-
--typedef struct _FcGlobalCacheDir {
-+struct _FcGlobalCacheDir {
- struct _FcGlobalCacheDir *next;
- FcGlobalCacheInfo info;
- int len;
- FcGlobalCacheFile *ents[FC_GLOBAL_CACHE_FILE_HASH_SIZE];
- FcGlobalCacheSubdir *subdirs;
--} FcGlobalCacheDir;
-+};
-
- typedef struct _FcGlobalCache {
- FcGlobalCacheDir *ents[FC_GLOBAL_CACHE_DIR_HASH_SIZE];
---- fontconfig/src/fcdir.c.subdir Mon Sep 9 13:04:09 2002
-+++ fontconfig/src/fcdir.c Mon Sep 9 15:09:41 2002
-@@ -117,6 +117,8 @@
- {
- isDir = FcTrue;
- ret = FcStrSetAdd (dirs, file);
-+ if (cache && ret)
-+ FcGlobalCacheUpdate (cache, file, 0, FC_FONT_FILE_DIR);
- }
- /*
- * Update the cache
---- fontconfig/src/fccache.c.subdir Sat Aug 31 18:17:31 2002
-+++ fontconfig/src/fccache.c Mon Sep 9 15:09:41 2002
-@@ -448,14 +448,11 @@
- parent = FcGlobalCacheDirGet (cache, i.dir, i.dir_len, FcTrue);
- if (!parent)
- return 0;
-- subdir = malloc (sizeof (FcGlobalCacheSubdir) +
-- strlen ((const char *) i.base) + 1);
-+ subdir = malloc (sizeof (FcGlobalCacheSubdir));
- if (!subdir)
- return 0;
-- FcMemAlloc (FC_MEM_CACHE, sizeof (FcGlobalCacheSubdir) +
-- strlen ((const char *) i.base) + 1);
-- subdir->file = (FcChar8 *) (subdir + 1);
-- strcpy ((char *) subdir->file, (const char *) i.base);
-+ FcMemAlloc (FC_MEM_CACHE, sizeof (FcGlobalCacheSubdir));
-+ subdir->ent = d;
- subdir->next = parent->subdirs;
- parent->subdirs = subdir;
- return &d->info;
-@@ -480,8 +477,7 @@
- for (s = d->subdirs; s; s = nexts)
- {
- nexts = s->next;
-- FcMemFree (FC_MEM_CACHE, sizeof (FcGlobalCacheSubdir) +
-- strlen ((char *) s->file) + 1);
-+ FcMemFree (FC_MEM_CACHE, sizeof (FcGlobalCacheSubdir));
- free (s);
- }
- FcMemFree (FC_MEM_CACHE, sizeof (FcGlobalCacheDir) + d->len + 1);
-@@ -535,12 +531,15 @@
- }
- for (subdir = d->subdirs; subdir; subdir = subdir->next)
- {
-+ FcFilePathInfo info = FcFilePathInfoGet (subdir->ent->info.file);
-+
- if (!FcCacheFontSetAdd (set, dirs, dir, dir_len,
-- subdir->file, FC_FONT_FILE_DIR))
-+ info.base, FC_FONT_FILE_DIR))
- {
- cache->broken = FcTrue;
- return FcFalse;
- }
-+ FcGlobalCacheReferenced (cache, &subdir->ent->info);
- }
-
- FcGlobalCacheReferenced (cache, &d->info);