X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_hosts.c;h=79bcb99d021eb2bf895c5f088dea109f53cc519c;hb=08094800b6370a9a9f28e3e429aa5d616b39388e;hp=65dcc546224bdd09d6deeb388d4cdedc7f4b0fe2;hpb=4df86fe8a036d271bcb03392f65d8bf815969d73;p=m6w6%2Flibmemcached diff --git a/libmemcached/memcached_hosts.c b/libmemcached/memcached_hosts.c index 65dcc546..79bcb99d 100644 --- a/libmemcached/memcached_hosts.c +++ b/libmemcached/memcached_hosts.c @@ -40,10 +40,7 @@ static int compare_servers(const void *p1, const void *p2) if (return_value == 0) { - if (a->port > b->port) - return_value++; - else - return_value--; + return_value= (int) (a->port - b->port); } return return_value; @@ -95,9 +92,11 @@ static int continuum_item_cmp(const void *t1, const void *t2) { struct continuum_item *ct1 = (struct continuum_item *)t1; struct continuum_item *ct2 = (struct continuum_item *)t2; - if(ct1->value == ct2->value) + + WATCHPOINT_ASSERT(ct1->value != 153); + if (ct1->value == ct2->value) return 0; - else if(ct1->value > ct2->value) + else if (ct1->value > ct2->value) return 1; else return -1; @@ -117,10 +116,10 @@ static uint32_t internal_generate_ketama_md5(char *key, size_t key_length) void update_continuum(memcached_st *ptr) { - int index; - int host_index; - int continuum_index= 0; - int value; + uint32_t index; + uint32_t host_index; + uint32_t continuum_index= 0; + uint32_t value; memcached_server_st *list = ptr->hosts; for (host_index = 0; host_index < ptr->number_of_hosts; ++host_index) @@ -139,11 +138,12 @@ void update_continuum(memcached_st *ptr) } } + WATCHPOINT_ASSERT(ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER <= MEMCACHED_CONTINUUM_SIZE); qsort(ptr->continuum, ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER, sizeof(struct continuum_item), continuum_item_cmp); #ifdef HAVE_DEBUG - for(index= 0; index < ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER - 1; ++index) + for (index= 0; index < ((ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER) - 1); index++) { - WATCHPOINT_ASSERT(ptr->continuum[index].value < ptr->continuum[index + 1].value); + WATCHPOINT_ASSERT(ptr->continuum[index].value <= ptr->continuum[index + 1].value); } #endif }