fix signed/unsigned mismatch in struct
diff --git a/Modules/_struct.c b/Modules/_struct.c
index 95b5e0b..a114216 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -763,7 +763,7 @@
 		return -1;
 	i = f->size;
 #ifdef PY_STRUCT_RANGE_CHECKING
-	if (i != SIZEOF_LONG && x >= (1 << (i * 8)))
+	if (i != SIZEOF_LONG && x >= (1 << (((unsigned int)i) * 8)))
 		return _range_error(f->format, f->size, 1);
 #endif
 	do {
@@ -975,7 +975,7 @@
 		return -1;
 	i = f->size;
 #ifdef PY_STRUCT_RANGE_CHECKING
-	if (i != SIZEOF_LONG && x >= (1 << (i * 8)))
+	if (i != SIZEOF_LONG && x >= (1 << (((unsigned int)i) * 8)))
 		return _range_error(f->format, f->size, 1);
 #endif
 	do {