X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffccache.c;h=349bc9ab500a69a12e32d5b107af1afbca873417;hb=f468f568b4aedef1606b0692addf47cb9f02b328;hp=742e9aa950efa23b91827598f0a546a48a5b2b8c;hpb=575a37b7975656f73162438635b4ba26e229b33f;p=fontconfig.git diff --git a/src/fccache.c b/src/fccache.c index 742e9aa..349bc9a 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -382,6 +382,7 @@ FcGlobalCacheSave (FcGlobalCache *cache, S_IRUSR | S_IWUSR); if (fd == -1) goto bail2; + FcCacheWriteString (fd, FC_GLOBAL_MAGIC_COOKIE); fd_orig = open ((char *) FcAtomicOrigFile(atomic), O_RDONLY); @@ -393,7 +394,12 @@ FcGlobalCacheSave (FcGlobalCache *cache, current_arch_machine_name); if (current_arch_start < 0) - current_arch_start = FcCacheNextOffset (lseek(fd_orig, 0, SEEK_END)); + { + off_t i = lseek(fd_orig, 0, SEEK_END); + if (i < strlen (FC_GLOBAL_MAGIC_COOKIE)+1) + i = strlen (FC_GLOBAL_MAGIC_COOKIE)+1; + current_arch_start = FcCacheNextOffset (i); + } if (!FcCacheCopyOld(fd, fd_orig, current_arch_start)) goto bail3; @@ -419,7 +425,6 @@ FcGlobalCacheSave (FcGlobalCache *cache, } truncate_to -= current_arch_start; - FcCacheWriteString (fd, FC_GLOBAL_MAGIC_COOKIE); sprintf (header, "%8x ", (int)truncate_to); strcat (header, current_arch_machine_name); if (!FcCacheWriteString (fd, header)) @@ -1159,7 +1164,12 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir) FcCacheSkipToArch(fd_orig, current_arch_machine_name); if (current_arch_start < 0) - current_arch_start = FcCacheNextOffset (lseek(fd_orig, 0, SEEK_END)); + { + off_t i = lseek(fd_orig, 0, SEEK_END); + if (i < strlen (FC_GLOBAL_MAGIC_COOKIE)+1) + i = strlen (FC_GLOBAL_MAGIC_COOKIE)+1; + current_arch_start = FcCacheNextOffset (i); + } if (fd_orig != -1 && !FcCacheCopyOld(fd, fd_orig, current_arch_start)) goto bail4;