Eliminate 'signed-to-unsigned value extension' compiler warning in AO_malloc
authorIvan Maidanski <ivmai@mail.ru>
Mon, 8 Feb 2016 07:13:47 +0000 (10:13 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 8 Feb 2016 07:13:47 +0000 (10:13 +0300)
* src/atomic_ops_malloc.c (msbs): Change type from int to unsigned
char.
* src/atomic_ops_malloc.c (msb): Change return type from int to
unsigned.
* src/atomic_ops_malloc.c (msb, AO_malloc): Change type of v, result,
log_sz local variables from int to unsigned.

src/atomic_ops_malloc.c

index 60757cf..124c87c 100644 (file)
@@ -224,16 +224,18 @@ static void add_chunk_as(void * chunk, unsigned log_sz)
   }
 }
 
-static const int msbs[16] = {0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4};
+static const unsigned char msbs[16] = {
+  0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4
+};
 
 /* Return the position of the most significant set bit in the   */
 /* argument.                                                    */
 /* We follow the conventions of ffs(), i.e. the least           */
 /* significant bit is number one.                               */
-static int msb(size_t s)
+static unsigned msb(size_t s)
 {
-  int result = 0;
-  int v;
+  unsigned result = 0;
+  unsigned v;
   if ((s & 0xff) != s) {
     /* The following is a tricky code ought to be equivalent to         */
     /* "(v = s >> 32) != 0" but suppresses warnings on 32-bit arch's.   */
@@ -266,7 +268,7 @@ void *
 AO_malloc(size_t sz)
 {
   AO_t *result;
-  int log_sz;
+  unsigned log_sz;
 
   if (sz > CHUNK_SIZE)
     return AO_malloc_large(sz);