]> git.wh0rd.org - fontconfig.git/commitdiff
Put all FcPattern objects though FcObjectStaticName and do pointer trather
authorRoss Burton <ross@burtonini.com>
Thu, 31 Mar 2005 19:16:49 +0000 (19:16 +0000)
committerRoss Burton <ross@burtonini.com>
Thu, 31 Mar 2005 19:16:49 +0000 (19:16 +0000)
    than string compares

ChangeLog
src/fclist.c
src/fcmatch.c
src/fcpat.c

index c18acbc95d4dcdf218ef08c1d3303c893c197b1e..63c44cd9a18fad4202df069430633c928052139f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
index aaa9061774799267deb87d0a4898ab40c18b69c8..ec47ddcabcec41fcf7780cdf59fc67c722af11a8 100644 (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;
 }
index 9afe495169b6ffa4b354dd4cefedeecd9a014852..9a6b35fba06aaf42ed991c959ffeda0ff779a27f 100644 (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)
index 2fea17304ac9f8a59cfb960e040fcec567129554..32054e12e3780c52f91f90341b75aaf6b50ee7e9 100644 (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)