Skip to content

Commit de3df46

Browse files
committed
bpo-29753: calculate bitfield size in a single arithmetic expression
Signed-off-by: Filipe Laíns <[email protected]>
1 parent 192e4b9 commit de3df46

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

Modules/_ctypes/cfield.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,7 @@ PyCField_FromDesc(PyObject *desc, Py_ssize_t index,
7474

7575
#ifndef MS_WIN32
7676
if (pack && bitsize) { /* packed bitfield */
77-
size = 1;
78-
while(size * 8 < bitsize)
79-
size += 1;
77+
size = (bitsize - 1) / 8 + 1;
8078
} else
8179
#endif
8280
size = dict->size;
@@ -180,8 +178,7 @@ PyCField_FromDesc(PyObject *desc, Py_ssize_t index,
180178

181179
case EXPAND_BITFIELD:
182180
if (pack)
183-
while(size * 8 < (*pbitofs + bitsize))
184-
size += 1;
181+
size = (*pbitofs + bitsize - 1) / 8 + 1;
185182

186183
*poffset += size - *pfield_size/8;
187184
*psize += size - *pfield_size/8;

0 commit comments

Comments
 (0)