From eae5bd77eea1f2f3c71015512e01ca6c070c6736 Mon Sep 17 00:00:00 2001
From: Andrea Shepard <andrea@persephoneslair.org>
Date: Sun, 20 Nov 2016 08:56:53 +0000
Subject: [PATCH] Fix charset_isset()/charset_set() inlines

---
 src/internal.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/internal.h b/src/internal.h
index dd40522d..24199e29 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;
-- 
GitLab