Put all FcPattern objects though FcObjectStaticName and do pointer trather

than string compares
This commit is contained in:
Ross Burton 2005-03-31 19:16:49 +00:00
parent 156032744e
commit ae7d0f3593
4 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2005-03-31 Ross Burton <ross@burtonini.com>
* src/fclist.c:
* src/fcmatch.c:
* src/fcpat.c:
Run all FcPattern objects through FcObjectStaticName, so that
compares can be done on pointers instead of strings (#2659)
2005-03-17 Tor Lillqvist <tml@novell.com>
* src/fontconfig.def.in: Add the .dll to the dll name.

View File

@ -67,10 +67,11 @@ FcObjectSetAdd (FcObjectSet *os, const char *object)
low = 0;
mid = 0;
c = 1;
object = FcObjectStaticName (object);
while (low <= high)
{
mid = (low + high) >> 1;
c = strcmp (os->objects[mid], object);
c = os->objects[mid] - object;
if (c == 0)
return FcTrue;
if (c < 0)
@ -82,7 +83,7 @@ FcObjectSetAdd (FcObjectSet *os, const char *object)
mid++;
memmove (os->objects + mid + 1, os->objects + mid,
(os->nobject - mid) * sizeof (const char *));
os->objects[mid] = FcObjectStaticName (object);
os->objects[mid] = object;
os->nobject++;
return FcTrue;
}

View File

@ -406,7 +406,7 @@ FcCompare (FcPattern *pat,
i2 = 0;
while (i1 < pat->num && i2 < fnt->num)
{
i = strcmp (pat->elts[i1].object, fnt->elts[i2].object);
i = pat->elts[i1].object - fnt->elts[i2].object;
if (i > 0)
i2++;
else if (i < 0)

View File

@ -588,6 +588,7 @@ FcPatternPosition (const FcPattern *p, const char *object)
{
int low, high, mid, c;
object = FcObjectStaticName(object);
low = 0;
high = p->num - 1;
c = 1;
@ -595,7 +596,7 @@ FcPatternPosition (const FcPattern *p, const char *object)
while (low <= high)
{
mid = (low + high) >> 1;
c = strcmp (p->elts[mid].object, object);
c = p->elts[mid].object - object;
if (c == 0)
return mid;
if (c < 0)