both the two comparisons of signed/unsigned in this case are harmless as it is basically:
if (int != unsigned int)
where neither the int not the unsigned int should ever be more than 128 or less than 0.
[This is the only line of code which changes either of the two variables compared:
( + 1) % SERIAL_BUFFER_SIZE; //where SERIAL_BUFFER_SIZE is defined as 64]
In reality, its another case of the arduino core and examples loving to be wasteful of ram - they should just be bytes aka uint8_t types - the same goes for all the cases where variables are used to store pin names - for some reason they like ints when a byte is plenty sufficient.