Replace key_compare_it with key_compare
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 14 Nov 2012 09:22:13 +0000 (10:22 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 14 Nov 2012 09:22:13 +0000 (10:22 +0100)
This is because key_compare_it throws exception on some CPUs
with alignment constraints.

include/it_key.h
index/kcontrol.c
index/trunc.c
util/it_key.c

index c52d47e..40071fc 100644 (file)
@@ -43,7 +43,6 @@ int key_compare(const void *p1, const void *p2);
 void key_init(struct it_key *k);
 zint key_get_seq(const void *p);
 zint key_get_segment(const void *p);
-int key_compare_it(const void *p1, const void *p2);
 int key_qsort_compare(const void *p1, const void *p2);
 char *key_print_it(const void *p, char *buf);
 void key_logdump(int mask, const void *p);
index ce413f5..0317d03 100644 (file)
@@ -61,7 +61,7 @@ struct rset_key_control *zebra_key_control_create(ZebraHandle zh)
 
     kc->context = cp;
     kc->key_size = sizeof(struct it_key);
-    kc->cmp = key_compare_it;
+    kc->cmp = key_compare;
     kc->key_logdump_txt = key_logdump_txt;
     kc->getseq = key_get_seq;
 
index 1127c1f..eb81fbb 100644 (file)
@@ -169,7 +169,7 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length,
                                           kctrl, scope, 0);
             rscur++;
         }
-        ti = heap_init (rscur, sizeof(struct it_key), key_compare_it);
+        ti = heap_init (rscur, sizeof(struct it_key), key_compare);
         for (i = rscur; --i >= 0; )
         {
             rsfd[i] = rset_open(rset[i], RSETF_READ);
@@ -219,7 +219,7 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length,
         ispt = (ISAMC_PP *) xmalloc(sizeof(*ispt) * (to-from));
 
         ti = heap_init(to-from, sizeof(struct it_key),
-                      key_compare_it);
+                      key_compare);
         for (i = to-from; --i >= 0; )
         {
             ispt[i] = isamc_pp_open(zi->reg->isamc, isam_p[from+i]);
@@ -274,7 +274,7 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length,
         ispt = (ISAMS_PP *) xmalloc(sizeof(*ispt) * (to-from));
 
         ti = heap_init(to-from, sizeof(struct it_key),
-                      key_compare_it);
+                      key_compare);
         for (i = to-from; --i >= 0; )
         {
             ispt[i] = isams_pp_open(zi->reg->isams, isam_p[from+i]);
@@ -317,7 +317,7 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length,
         ispt = (ISAMB_PP *) xmalloc(sizeof(*ispt) * (to-from));
 
         ti = heap_init(to-from, sizeof(struct it_key),
-                      key_compare_it);
+                      key_compare);
         for (i = to-from; --i >= 0; )
         {
            if (isam_p[from+i]) {
index 5ec244b..205ce6f 100644 (file)
@@ -64,25 +64,6 @@ void key_logdump(int logmask, const void *p)
     key_logdump_txt(logmask,  p, "");
 }
 
-int key_compare_it (const void *p1, const void *p2)
-{
-    int i, l = ((struct it_key *) p1)->len;
-    if (((struct it_key *) p2)->len > l)
-       l = ((struct it_key *) p2)->len;
-    assert (l <= IT_KEY_LEVEL_MAX && l > 0);
-    for (i = 0; i < l; i++)
-    {
-       if (((struct it_key *) p1)->mem[i] != ((struct it_key *) p2)->mem[i])
-       {
-           if (((struct it_key *) p1)->mem[i] > ((struct it_key *) p2)->mem[i])
-               return l-i;
-           else
-               return i-l;
-       }
-    }
-    return 0;
-}
-
 char *key_print_it (const void *p, char *buf)
 {
     strcpy(buf, "");