Skip to content

Commit b4811e8

Browse files
committed
improve error message
1 parent 7885314 commit b4811e8

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

bitarray/_util.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -869,14 +869,18 @@ digit_to_int(int m, char c)
869869
static int
870870
base_to_length(int n)
871871
{
872-
int m;
872+
int m = 0;
873873

874-
for (m = 1; m < 7; m++) {
875-
if (n == (1 << m))
876-
return m;
874+
if (!n || n & (n - 1)) {
875+
PyErr_SetString(PyExc_ValueError, "base must be a power of 2");
876+
return -1;
877877
}
878-
PyErr_Format(PyExc_ValueError,
879-
"base must be 2, 4, 8, 16, 32 or 64, not %d", n);
878+
while (n >>= 1)
879+
m++;
880+
if (1 <= m && m <= 6)
881+
return m;
882+
883+
PyErr_SetString(PyExc_ValueError, "base must be 2, 4, 8, 16, 32 or 64");
880884
return -1;
881885
}
882886

0 commit comments

Comments
 (0)