]> git.ozlabs.org Git - ccan/blobdiff - ccan/idtree/idtree.c
idtree: make sanitizer happier about shifts.
[ccan] / ccan / idtree / idtree.c
index e8873926a79c07a21b7b843f06b3b4cfaa7078c9..e10c17239cdfc407e40da7c77dfb4e5f57edc42a 100644 (file)
@@ -42,9 +42,9 @@
 #define MAX_LEVEL (MAX_ID_SHIFT + IDTREE_BITS - 1) / IDTREE_BITS
 #define IDTREE_FREE_MAX MAX_LEVEL + MAX_LEVEL
 
-#define set_bit(bit, v) (v) |= (1<<(bit))
-#define clear_bit(bit, v) (v) &= ~(1<<(bit))
-#define test_bit(bit, v) ((v) & (1<<(bit)))
+#define set_bit(bit, v) (v) |= (1U<<(bit))
+#define clear_bit(bit, v) (v) &= ~(1U<<(bit))
+#define test_bit(bit, v) ((v) & (1U<<(bit)))
 
 struct idtree_layer {
        uint32_t                 bitmap;
@@ -100,7 +100,8 @@ static int sub_alloc(struct idtree *idp, const void *ptr, int *starting_id)
        int n, m, sh;
        struct idtree_layer *p, *pn;
        struct idtree_layer *pa[MAX_LEVEL+1];
-       unsigned int l, id, oid;
+       unsigned int l;
+       int id, oid;
        uint32_t bm;
 
        memset(pa, 0, sizeof(pa));
@@ -121,7 +122,7 @@ restart:
                        /* no space available go back to previous layer. */
                        l++;
                        oid = id;
-                       id = (id | ((1 << (IDTREE_BITS*l))-1)) + 1;
+                       id = (id | ((1U << (IDTREE_BITS*l))-1)) + 1;
 
                        /* if already at the top layer, we need to grow */
                        if (!(p = pa[l])) {
@@ -134,7 +135,7 @@ restart:
                         */
                        sh = IDTREE_BITS * (l + 1);
                        if (oid >> sh == id >> sh)
-                       continue;
+                               continue;
                        else
                                goto restart;
                }
@@ -277,7 +278,7 @@ void *idtree_lookup(const struct idtree *idp, int id)
         * present.  If so, tain't one of ours!
         */
        if (n + IDTREE_BITS < 31 &&
-           (id & ~(~0 << MAX_ID_SHIFT)) >> (n + IDTREE_BITS))
+           (id & ~(~0U << MAX_ID_SHIFT)) >> (n + IDTREE_BITS))
             return NULL;
 
        /* Mask off upper bits we don't use for the search. */