diff --git a/creole.c b/creole.c index 3da1e3e..d29d25c 100644 --- a/creole.c +++ b/creole.c @@ -210,7 +210,7 @@ static int parse_special_byte(unsigned char c, struct word *w) if (i >= SPECIAL_CONTINUE_BYTE_NUM) return 0; - w->high_bits = (w->high_bits << i) | ((c >> (5 - i)) & mask[i]); + w->high_bits = (w->high_bits << (i + 1)) | ((c >> (5 - i)) & mask[i]); w->word = c & wordmask[i]; return 1; } diff --git a/test_encode_decode.c b/test_encode_decode.c index e165e1e..fb0ba31 100644 --- a/test_encode_decode.c +++ b/test_encode_decode.c @@ -209,7 +209,7 @@ void encode_decode_byte_seq(creole_word max, unsigned encode_to, unsigned high_b static void test_encode_decode(void) { unsigned high_bits = 0; int encode_len; - creole_word maxima[6] = {0x7F, 0xFFF, 0x1FFFF, 0x3FFFFF, 0x7FFFFFF, 0xFFFFFFFF}; + const creole_word maxima[6] = {0x7F, 0xFFF, 0x1FFFF, 0x3FFFFF, 0x7FFFFFF, 0xFFFFFFFF}; encode_decode_byte_seq(0x7F, 1, 0);