summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Lam <plam@MIT.EDU>2006-02-09 16:19:42 +0000
committerPatrick Lam <plam@MIT.EDU>2006-02-09 16:19:42 +0000
commitc7490074c57da387904cecfdf60595713c7bb89e (patch)
treec3cf0733e19a75d81783dd071c683212e486654f
parenta8c425301aeb8e417b0fa35567b2f8f64b450657 (diff)
Fix attempt to close -1. Don't unboundedly grow bad caches (reported by
fcrozat).
-rw-r--r--ChangeLog6
-rw-r--r--src/fccache.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index df5b0ae..6abd791 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
2006-02-09 Patrick Lam <plam@mit.edu>
+ * src/fccache.c (FcDirCacheValid, FcDirCacheWrite):
+
+ Fix attempt to close -1.
+ Don't unboundedly grow bad caches (reported by fcrozat).
+
+2006-02-09 Patrick Lam <plam@mit.edu>
* src/fccharset.c (FcCharSetNeededBytes, FcCharSetSerialize,
FcCharSetGetLeaf):
diff --git a/src/fccache.c b/src/fccache.c
index 90d0894..69b08cb 100644
--- a/src/fccache.c
+++ b/src/fccache.c
@@ -726,7 +726,7 @@ FcDirCacheValid (const FcChar8 *dir)
fd = FcDirCacheOpen (dir);
if (fd < 0)
- goto bail;
+ return FcFalse;
if (fstat (fd, &file_stat) < 0)
goto bail;
@@ -1239,13 +1239,15 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
if(!FcCacheReadString (fd, name_buf, sizeof (name_buf)) || !strlen(name_buf))
{
close (fd);
- break;
+ continue;
}
close (fd);
if (strcmp (name_buf, cache_file) != 0)
continue;
- } while (0);
+
+ break;
+ } while (1);
current_dir_block = FcDirCacheProduce (set, &metadata);