diff --git a/src/internal.h b/src/internal.h index dd40522dd2f271052827111bf0c9aca620ba9c93..24199e297848f60f0d910815843cd109e81c0ce0 100644 --- a/src/internal.h +++ b/src/internal.h @@ -198,7 +198,8 @@ static inline void charset_complement(HCharset cs) { } static inline int charset_isset(HCharset cs, uint8_t pos) { - return !!(cs[CHARSET_BIT_IDX_TO_WORD(pos)] & CHARSET_BIT_POS_IN_WORD_MASK(pos)); + return !!(cs[CHARSET_BIT_IDX_TO_WORD(pos)] & + CHARSET_BIT_POS_IN_WORD_MASK(CHARSET_BIT_IDX_TO_BIT_IN_WORD(pos))); } static inline void charset_restrict_to_range(HCharset cs, uint8_t idx_start, uint8_t idx_end) { @@ -236,8 +237,10 @@ static inline void charset_restrict_to_range(HCharset cs, uint8_t idx_start, uin static inline void charset_set(HCharset cs, uint8_t pos, int val) { cs[CHARSET_BIT_IDX_TO_WORD(pos)] = val - ? cs[CHARSET_BIT_IDX_TO_WORD(pos)] | CHARSET_BIT_POS_IN_WORD_MASK(pos) - : cs[CHARSET_BIT_IDX_TO_WORD(pos)] & ~CHARSET_BIT_POS_IN_WORD_MASK(pos); + ? cs[CHARSET_BIT_IDX_TO_WORD(pos)] | CHARSET_BIT_POS_IN_WORD_MASK( + CHARSET_BIT_IDX_TO_BIT_IN_WORD(pos)) + : cs[CHARSET_BIT_IDX_TO_WORD(pos)] & ~CHARSET_BIT_POS_IN_WORD_MASK( + CHARSET_BIT_IDX_TO_BIT_IN_WORD(pos)); } typedef unsigned int HHashValue;