@@ -519,7 +519,7 @@ np_ubyte(char *p, PyObject *v, const formatdef *f)
519
519
"ubyte format requires 0 <= number <= 255" );
520
520
return -1 ;
521
521
}
522
- * p = (char )x ;
522
+ * ( unsigned char * ) p = (unsigned char )x ;
523
523
return 0 ;
524
524
}
525
525
@@ -850,6 +850,7 @@ bp_int(char *p, PyObject *v, const formatdef *f)
850
850
{
851
851
long x ;
852
852
Py_ssize_t i ;
853
+ unsigned char * q = (unsigned char * )p ;
853
854
if (get_long (v , & x ) < 0 )
854
855
return -1 ;
855
856
i = f -> size ;
@@ -862,7 +863,7 @@ bp_int(char *p, PyObject *v, const formatdef *f)
862
863
#endif
863
864
}
864
865
do {
865
- p [-- i ] = (char )x ;
866
+ q [-- i ] = (unsigned char )( x & 0xffL ) ;
866
867
x >>= 8 ;
867
868
} while (i > 0 );
868
869
return 0 ;
@@ -873,6 +874,7 @@ bp_uint(char *p, PyObject *v, const formatdef *f)
873
874
{
874
875
unsigned long x ;
875
876
Py_ssize_t i ;
877
+ unsigned char * q = (unsigned char * )p ;
876
878
if (get_ulong (v , & x ) < 0 )
877
879
return -1 ;
878
880
i = f -> size ;
@@ -883,7 +885,7 @@ bp_uint(char *p, PyObject *v, const formatdef *f)
883
885
RANGE_ERROR (x , f , 1 , maxint - 1 );
884
886
}
885
887
do {
886
- p [-- i ] = (char )x ;
888
+ q [-- i ] = (unsigned char )( x & 0xffUL ) ;
887
889
x >>= 8 ;
888
890
} while (i > 0 );
889
891
return 0 ;
@@ -1070,6 +1072,7 @@ lp_int(char *p, PyObject *v, const formatdef *f)
1070
1072
{
1071
1073
long x ;
1072
1074
Py_ssize_t i ;
1075
+ unsigned char * q = (unsigned char * )p ;
1073
1076
if (get_long (v , & x ) < 0 )
1074
1077
return -1 ;
1075
1078
i = f -> size ;
@@ -1082,7 +1085,7 @@ lp_int(char *p, PyObject *v, const formatdef *f)
1082
1085
#endif
1083
1086
}
1084
1087
do {
1085
- * p ++ = (char )x ;
1088
+ * q ++ = (unsigned char )( x & 0xffL ) ;
1086
1089
x >>= 8 ;
1087
1090
} while (-- i > 0 );
1088
1091
return 0 ;
@@ -1093,6 +1096,7 @@ lp_uint(char *p, PyObject *v, const formatdef *f)
1093
1096
{
1094
1097
unsigned long x ;
1095
1098
Py_ssize_t i ;
1099
+ unsigned char * q = (unsigned char * )p ;
1096
1100
if (get_ulong (v , & x ) < 0 )
1097
1101
return -1 ;
1098
1102
i = f -> size ;
@@ -1103,7 +1107,7 @@ lp_uint(char *p, PyObject *v, const formatdef *f)
1103
1107
RANGE_ERROR (x , f , 1 , maxint - 1 );
1104
1108
}
1105
1109
do {
1106
- * p ++ = (char )x ;
1110
+ * q ++ = (unsigned char )( x & 0xffUL ) ;
1107
1111
x >>= 8 ;
1108
1112
} while (-- i > 0 );
1109
1113
return 0 ;
0 commit comments