]> git.wh0rd.org - fontconfig.git/commitdiff
Must not insert cache into hash table before completely validating.
authorKeith Packard <keithp@koto.keithp.com>
Thu, 18 Oct 2007 16:41:00 +0000 (09:41 -0700)
committerKeith Packard <keithp@koto.keithp.com>
Thu, 18 Oct 2007 16:41:00 +0000 (09:41 -0700)
The cache was inserted into the hash table before the timestamps in the
cache were verified; if that verification failed, an extra pointer to the
now freed cache would be left in the hash table. FcFini would fail an
assertion as a result.

src/fccache.c

index c43609ccdd735f734fb2341cfbca813a8549dbbe..bd8db460d60513170a45d5a907813b1ef99d0d0e 100644 (file)
@@ -493,8 +493,8 @@ FcDirCacheMapFd (int fd, struct stat *fd_stat, struct stat *dir_stat)
     if (cache->magic != FC_CACHE_MAGIC_MMAP || 
        cache->version < FC_CACHE_CONTENT_VERSION ||
        cache->size != fd_stat->st_size ||
-       !FcCacheInsert (cache, fd_stat) ||
-       !FcCacheTimeValid (cache, dir_stat))
+       !FcCacheTimeValid (cache, dir_stat) ||
+       !FcCacheInsert (cache, fd_stat))
     {
        if (allocated)
            free (cache);