From 1c475d5c8cb265ac939d6b9e097666e300162511 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 28 Mar 2011 16:33:12 -0400 Subject: [PATCH] Bug 35587 - Add padding to make valgrind and glibc not hate each other --- src/fccfg.c | 13 +++++++++++-- src/fcpat.c | 10 +++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/fccfg.c b/src/fccfg.c index 4beb7d2..09c5991 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -1689,10 +1689,19 @@ static FcChar8 * FcConfigFileExists (const FcChar8 *dir, const FcChar8 *file) { FcChar8 *path; + int size; if (!dir) dir = (FcChar8 *) ""; - path = malloc (strlen ((char *) dir) + 1 + strlen ((char *) file) + 1); + + size = strlen ((char *) dir) + 1 + strlen ((char *) file) + 1; + /* + * workaround valgrind warning because glibc takes advantage of how it knows memory is + * allocated to implement strlen by reading in groups of 4 + */ + size = (size + 3) & ~3; + + path = malloc (size); if (!path) return 0; @@ -1711,7 +1720,7 @@ FcConfigFileExists (const FcChar8 *dir, const FcChar8 *file) #endif strcat ((char *) path, (char *) file); - FcMemAlloc (FC_MEM_STRING, strlen ((char *) path) + 1); + FcMemAlloc (FC_MEM_STRING, size); if (access ((char *) path, R_OK) == 0) return path; diff --git a/src/fcpat.c b/src/fcpat.c index be01a4f..8f63659 100644 --- a/src/fcpat.c +++ b/src/fcpat.c @@ -1057,9 +1057,13 @@ FcStrStaticName (const FcChar8 *name) if (b->hash == hash && !strcmp ((char *)name, (char *) (b + 1))) return (FcChar8 *) (b + 1); size = sizeof (struct objectBucket) + strlen ((char *)name) + 1; - b = malloc (size + sizeof (int)); - /* workaround glibc bug which reads strlen in groups of 4 */ - FcMemAlloc (FC_MEM_STATICSTR, size + sizeof (int)); + /* + * workaround valgrind warning because glibc takes advantage of how it knows memory is + * allocated to implement strlen by reading in groups of 4 + */ + size = (size + 3) & ~3; + b = malloc (size); + FcMemAlloc (FC_MEM_STATICSTR, size); if (!b) return NULL; b->next = 0; -- 2.7.4