typedef struct
 {
-   WordEntry   entry;          /* must be first! */
+   WordEntry   entry;          /* must be first, see compareentry */
    WordEntryPos *pos;
    int         poslen;         /* number of elements in pos */
 } WordEntryIN;
    return res + 1 - a;
 }
 
-/* Compare two WordEntryIN values for qsort */
+/*
+ * Compare two WordEntry structs for qsort_arg.  This can also be used on
+ * WordEntryIN structs, since those have WordEntry as their first field.
+ */
 static int
 compareentry(const void *va, const void *vb, void *arg)
 {
-   const WordEntryIN *a = (const WordEntryIN *) va;
-   const WordEntryIN *b = (const WordEntryIN *) vb;
+   const WordEntry *a = (const WordEntry *) va;
+   const WordEntry *b = (const WordEntry *) vb;
    char       *BufferStr = (char *) arg;
 
-   return tsCompareString(&BufferStr[a->entry.pos], a->entry.len,
-                          &BufferStr[b->entry.pos], b->entry.len,
+   return tsCompareString(&BufferStr[a->pos], a->len,
+                          &BufferStr[b->pos], b->len,
                           false);
 }
 
    return res + 1 - a;
 }
 
-static int
-WordEntryCMP(WordEntry *a, WordEntry *b, char *buf)
-{
-   return compareentry(a, b, buf);
-}
-
 
 Datum
 tsvectorin(PG_FUNCTION_ARGS)
 
        datalen += lex_len;
 
-       if (i > 0 && WordEntryCMP(&vec->entries[i],
+       if (i > 0 && compareentry(&vec->entries[i],
                                  &vec->entries[i - 1],
                                  STRPTR(vec)) <= 0)
            needSort = true;