debug vector_iterate for 4-bit levels
[rrq/rrqmisc.git] / vector / vector.c
index 129ba02990e8e01d03ec6364b1092ac418e654d9..feaed9f1792ae571d92083bd4a7c642d2f9f370a 100644 (file)
@@ -15,6 +15,8 @@ typedef union {
     } __attribute__ ((__packed__)) as_byte[8];
 } vector_indexing;
 
+#define VECTOR_LEVEL_MASK ( VECTOR_SLOTS - 1 )
+
 #define VECTOR_PART_BYTE(i,p) ((vector_indexing*)(i))->as_byte[ (p)/2 ]
 
 static int VECTOR_INDEX_PART(vector_index *index,int part) {
@@ -359,7 +361,7 @@ void vector_iterate(vector *pv,
        if ( slot == 0 ) {
            break;
        }
-       int i = index & 0xff;
+       int i = index & VECTOR_LEVEL_MASK ;
        for ( ; i < VECTOR_SLOTS && index < pv->size; i++, index++, slot++ ) {
            if ( itemfn( index, *slot, data ) ) {
                return;