Use VECTOR_SIZE() defines
authorHannes Reinecke <hare@suse.de>
Tue, 8 Jan 2013 13:54:09 +0000 (14:54 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Tue, 8 Jan 2013 23:20:07 +0000 (00:20 +0100)
The size of a vector slot might be larger than one, so we should
be using the VECTOR_SIZE() define everywhere.

Signed-off-by: Hannes Reinecke <hare@suse.de>
libmultipath/vector.c
libmultipath/vector.h

index 0564224..7159b7e 100644 (file)
@@ -81,7 +81,7 @@ vector_insert_slot(vector v, int slot, void *value)
        if (!vector_alloc_slot(v))
                return NULL;
 
-       for (i = (v->allocated /VECTOR_DEFAULT_SIZE) - 2; i >= slot; i--)
+       for (i = VECTOR_SIZE(v) - 2; i >= slot; i--)
                v->slot[i + 1] = v->slot[i];
 
        v->slot[slot] = value;
@@ -97,7 +97,7 @@ find_slot(vector v, void * addr)
        if (!v)
                return -1;
 
-       for (i = 0; i < (v->allocated / VECTOR_DEFAULT_SIZE); i++)
+       for (i = 0; i < VECTOR_SIZE(v); i++)
                if (v->slot[i] == addr)
                        return i;
 
@@ -112,7 +112,7 @@ vector_del_slot(vector v, int slot)
        if (!v || !v->allocated || slot < 0 || slot > VECTOR_SIZE(v))
                return;
 
-       for (i = slot + 1; i < (v->allocated / VECTOR_DEFAULT_SIZE); i++)
+       for (i = slot + 1; i < VECTOR_SIZE(v); i++)
                v->slot[i-1] = v->slot[i];
 
        v->allocated -= VECTOR_DEFAULT_SIZE;
@@ -140,7 +140,7 @@ vector_repack(vector v)
        if (!v || !v->allocated)
                return;
 
-       for (i = 0; i < (v->allocated / VECTOR_DEFAULT_SIZE); i++)
+       for (i = 0; i < VECTOR_SIZE(v); i++)
                if (i > 0 && v->slot[i] == NULL)
                        vector_del_slot(v, i--);
 }
index ca42be1..6779186 100644 (file)
@@ -31,14 +31,14 @@ struct _vector {
 typedef struct _vector *vector;
 
 #define VECTOR_DEFAULT_SIZE 1
-#define VECTOR_SLOT(V,E) (((V) && (E) < (V)->allocated) ? (V)->slot[(E)] : NULL)
-#define VECTOR_SIZE(V)   ((V) ? (V)->allocated : 0)
-#define VECTOR_LAST_SLOT(V)   (((V) && (V)->allocated) ? (V)->slot[((V)->allocated - 1)] : NULL)
+#define VECTOR_SIZE(V)   ((V) ? ((V)->allocated) / VECTOR_DEFAULT_SIZE : 0)
+#define VECTOR_SLOT(V,E) (((V) && (E) < VECTOR_SIZE(V)) ? (V)->slot[(E)] : NULL)
+#define VECTOR_LAST_SLOT(V)   (((V) && VECTOR_SIZE(V) > 0) ? (V)->slot[(VECTOR_SIZE(V) - 1)] : NULL)
 
 #define vector_foreach_slot(v,p,i) \
-       for (i = 0; (v) && i < (v)->allocated && ((p) = (v)->slot[i]); i++)
+       for (i = 0; (v) && i < VECTOR_SIZE(v) && ((p) = (v)->slot[i]); i++)
 #define vector_foreach_slot_after(v,p,i) \
-       for (; (v) && i < (v)->allocated && ((p) = (v)->slot[i]); i++)
+       for (; (v) && i < VECTOR_SIZE(v) && ((p) = (v)->slot[i]); i++)
 #define vector_foreach_slot_backwards(v,p,i) \
        for (i = VECTOR_SIZE(v); i > 0 && ((p) = (v)->slot[i-1]); i--)