Rename FcPatternThawAll to FcPatternFini.
Pull the FcObjectStateName hash table out to file scope, and add FcObjectStaticNameFini so that FcFini will cleanup this hash table as well. Clear FILE* to NULL after fclose.
This commit is contained in:
parent
f1a42f6b5f
commit
7850458d28
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
|||
2005-07-15 Carl Worth <cworth@cworth.org>
|
||||
|
||||
* src/fcint.h:
|
||||
* src/fcinit.c: (FcFini):
|
||||
* src/fcpat.c: (FcPatternFini): Rename FcPatternThawAll to
|
||||
FcPatternFini.
|
||||
|
||||
* src/fcpat.c: (FcObjectStaticName), (FcObjectStaticNameFini):
|
||||
Pull the FcObjectStateName hash table out to file scope, and add
|
||||
FcObjectStaticNameFini so that FcFini will cleanup this hash table
|
||||
as well.
|
||||
|
||||
* src/fcxml.c: (FcConfigParseAndLoad): Clear FILE* to NULL after
|
||||
fclose.
|
||||
|
||||
2005-06-16 Patrick Lam <plam@MIT.EDU>
|
||||
|
||||
reviewed by: keithp
|
||||
|
|
|
@ -116,7 +116,7 @@ FcFini (void)
|
|||
if (_fcConfig)
|
||||
FcConfigDestroy (_fcConfig);
|
||||
|
||||
FcPatternThawAll ();
|
||||
FcPatternFini ();
|
||||
FcCharSetThawAll ();
|
||||
}
|
||||
|
||||
|
|
|
@ -710,7 +710,7 @@ FcPattern *
|
|||
FcPatternFreeze (FcPattern *p);
|
||||
|
||||
void
|
||||
FcPatternThawAll (void);
|
||||
FcPatternFini (void);
|
||||
|
||||
FcBool
|
||||
FcPatternAppend (FcPattern *p, FcPattern *s);
|
||||
|
|
49
src/fcpat.c
49
src/fcpat.c
|
@ -579,13 +579,6 @@ bail:
|
|||
return n;
|
||||
}
|
||||
|
||||
void
|
||||
FcPatternThawAll (void)
|
||||
{
|
||||
FcPatternBaseThawAll ();
|
||||
FcValueListThawAll ();
|
||||
}
|
||||
|
||||
static int
|
||||
FcPatternPosition (const FcPattern *p, const char *object)
|
||||
{
|
||||
|
@ -1173,20 +1166,21 @@ FcPatternAppend (FcPattern *p, FcPattern *s)
|
|||
return FcTrue;
|
||||
}
|
||||
|
||||
#define OBJECT_HASH_SIZE 31
|
||||
static struct objectBucket {
|
||||
struct objectBucket *next;
|
||||
FcChar32 hash;
|
||||
} *FcObjectBuckets[OBJECT_HASH_SIZE];
|
||||
|
||||
const char *
|
||||
FcObjectStaticName (const char *name)
|
||||
{
|
||||
#define OBJECT_HASH_SIZE 31
|
||||
static struct objectBucket {
|
||||
struct objectBucket *next;
|
||||
FcChar32 hash;
|
||||
} *buckets[OBJECT_HASH_SIZE];
|
||||
FcChar32 hash = FcStringHash ((const FcChar8 *) name);
|
||||
struct objectBucket **p;
|
||||
struct objectBucket *b;
|
||||
int size;
|
||||
|
||||
for (p = &buckets[hash % OBJECT_HASH_SIZE]; (b = *p); p = &(b->next))
|
||||
for (p = &FcObjectBuckets[hash % OBJECT_HASH_SIZE]; (b = *p); p = &(b->next))
|
||||
if (b->hash == hash && !strcmp (name, (char *) (b + 1)))
|
||||
return (char *) (b + 1);
|
||||
size = sizeof (struct objectBucket) + strlen (name) + 1;
|
||||
|
@ -1200,3 +1194,32 @@ FcObjectStaticName (const char *name)
|
|||
*p = b;
|
||||
return (char *) (b + 1);
|
||||
}
|
||||
|
||||
static void
|
||||
FcObjectStaticNameFini (void)
|
||||
{
|
||||
int i, size;
|
||||
struct objectBucket *b, *next;
|
||||
char *name;
|
||||
|
||||
for (i = 0; i < OBJECT_HASH_SIZE; i++)
|
||||
{
|
||||
for (b = FcObjectBuckets[i]; b; b = next)
|
||||
{
|
||||
next = b->next;
|
||||
name = (char *) (b + 1);
|
||||
size = sizeof (struct objectBucket) + strlen (name) + 1;
|
||||
FcMemFree (FC_MEM_STATICSTR, size);
|
||||
free (b);
|
||||
}
|
||||
FcObjectBuckets[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
FcPatternFini (void)
|
||||
{
|
||||
FcPatternBaseThawAll ();
|
||||
FcValueListThawAll ();
|
||||
FcObjectStaticNameFini ();
|
||||
}
|
||||
|
|
|
@ -2375,6 +2375,7 @@ bail2:
|
|||
XML_ParserFree (p);
|
||||
bail1:
|
||||
fclose (f);
|
||||
f = NULL;
|
||||
bail0:
|
||||
if (error && complain)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue