diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index 4280d886769..d4bfa17bb41 100644 --- a/Modules/_ctypes/cfield.c +++ b/Modules/_ctypes/cfield.c @@ -74,9 +74,7 @@ PyCField_FromDesc(PyObject *desc, Py_ssize_t index, #ifndef MS_WIN32 if (pack && bitsize) { /* packed bitfield */ - size = 1; - while(size * 8 < bitsize) - size += 1; + size = (bitsize - 1) / 8 + 1; } else #endif size = dict->size; @@ -182,8 +180,7 @@ PyCField_FromDesc(PyObject *desc, Py_ssize_t index, case EXPAND_BITFIELD: if (pack) - while(size * 8 < (*pbitofs + bitsize)) - size += 1; + size = (*pbitofs + bitsize - 1) / 8 + 1; *poffset += size - *pfield_size/8; *psize += size - *pfield_size/8;