Index: mpi-1.8.6/mpi.c =================================================================== --- mpi-1.8.6.orig/mpi.c 2011-12-08 21:03:20.000000000 -0800 +++ mpi-1.8.6/mpi.c 2011-12-08 21:05:04.000000000 -0800 @@ -2401,7 +2401,7 @@ int ix; d = *dp; - for(ix = 0; ix < sizeof(mp_digit); ++ix) { + for(ix = 0; ix < (int) sizeof(mp_digit); ++ix) { *spos = d & UCHAR_MAX; d >>= CHAR_BIT; ++spos; @@ -2598,10 +2598,10 @@ /* Reverse the digits and sign indicator */ ix = 0; while(ix < pos) { - char tmp = str[ix]; + char tmp2 = str[ix]; str[ix] = str[pos]; - str[pos] = tmp; + str[pos] = tmp2; ++ix; --pos; } @@ -2952,10 +2952,10 @@ void s_mp_mod_2d(mp_int *mp, mp_digit d) { unsigned int ndig = (d / DIGIT_BIT), nbit = (d % DIGIT_BIT); - unsigned int ix; + int ix; mp_digit dmask, *dp = DIGITS(mp); - if(ndig >= USED(mp)) + if((int) ndig >= USED(mp)) return; /* Flush all the bits above 2^d in its digit */ Index: mpi-1.8.6/mplogic.c =================================================================== --- mpi-1.8.6.orig/mplogic.c 2011-12-08 21:03:20.000000000 -0800 +++ mpi-1.8.6/mplogic.c 2011-12-08 21:05:16.000000000 -0800 @@ -290,7 +290,7 @@ for(ix = 0; ix < USED(a); ix++) { cur = DIGIT(a, ix); - for(db = 0; db < sizeof(mp_digit); db++) { + for(db = 0; db < (int) sizeof(mp_digit); db++) { reg = (cur >> (CHAR_BIT * db)) & UCHAR_MAX; nset += bitc[reg]; @@ -319,7 +319,7 @@ for(ix = 0; ix < USED(a); ix++) { cur = DIGIT(a, ix); - for(db = 0; db < sizeof(mp_digit); db++) { + for(db = 0; db < (int) sizeof(mp_digit); db++) { reg = (cur >> (CHAR_BIT * db)) & UCHAR_MAX; nset += bitc[UCHAR_MAX - reg];