@@ -543,7 +543,7 @@ np_ubyte(char *p, PyObject *v, const formatdef *f)
543
543
"ubyte format requires 0 <= number <= 255" );
544
544
return -1 ;
545
545
}
546
- * p = (char )x ;
546
+ * ( unsigned char * ) p = (unsigned char )x ;
547
547
return 0 ;
548
548
}
549
549
@@ -864,6 +864,7 @@ bp_int(char *p, PyObject *v, const formatdef *f)
864
864
{
865
865
long x ;
866
866
Py_ssize_t i ;
867
+ unsigned char * q = (unsigned char * )p ;
867
868
if (get_long (v , & x ) < 0 )
868
869
return -1 ;
869
870
i = f -> size ;
@@ -876,7 +877,7 @@ bp_int(char *p, PyObject *v, const formatdef *f)
876
877
#endif
877
878
}
878
879
do {
879
- p [-- i ] = (char )x ;
880
+ q [-- i ] = (unsigned char )( x & 0xffL ) ;
880
881
x >>= 8 ;
881
882
} while (i > 0 );
882
883
return 0 ;
@@ -887,6 +888,7 @@ bp_uint(char *p, PyObject *v, const formatdef *f)
887
888
{
888
889
unsigned long x ;
889
890
Py_ssize_t i ;
891
+ unsigned char * q = (unsigned char * )p ;
890
892
if (get_ulong (v , & x ) < 0 )
891
893
return -1 ;
892
894
i = f -> size ;
@@ -897,7 +899,7 @@ bp_uint(char *p, PyObject *v, const formatdef *f)
897
899
RANGE_ERROR (x , f , 1 , maxint - 1 );
898
900
}
899
901
do {
900
- p [-- i ] = (char )x ;
902
+ q [-- i ] = (unsigned char )( x & 0xffUL ) ;
901
903
x >>= 8 ;
902
904
} while (i > 0 );
903
905
return 0 ;
@@ -1077,6 +1079,7 @@ lp_int(char *p, PyObject *v, const formatdef *f)
1077
1079
{
1078
1080
long x ;
1079
1081
Py_ssize_t i ;
1082
+ unsigned char * q = (unsigned char * )p ;
1080
1083
if (get_long (v , & x ) < 0 )
1081
1084
return -1 ;
1082
1085
i = f -> size ;
@@ -1089,7 +1092,7 @@ lp_int(char *p, PyObject *v, const formatdef *f)
1089
1092
#endif
1090
1093
}
1091
1094
do {
1092
- * p ++ = (char )x ;
1095
+ * q ++ = (unsigned char )( x & 0xffL ) ;
1093
1096
x >>= 8 ;
1094
1097
} while (-- i > 0 );
1095
1098
return 0 ;
@@ -1100,6 +1103,7 @@ lp_uint(char *p, PyObject *v, const formatdef *f)
1100
1103
{
1101
1104
unsigned long x ;
1102
1105
Py_ssize_t i ;
1106
+ unsigned char * q = (unsigned char * )p ;
1103
1107
if (get_ulong (v , & x ) < 0 )
1104
1108
return -1 ;
1105
1109
i = f -> size ;
@@ -1110,7 +1114,7 @@ lp_uint(char *p, PyObject *v, const formatdef *f)
1110
1114
RANGE_ERROR (x , f , 1 , maxint - 1 );
1111
1115
}
1112
1116
do {
1113
- * p ++ = (char )x ;
1117
+ * q ++ = (unsigned char )( x & 0xffUL ) ;
1114
1118
x >>= 8 ;
1115
1119
} while (-- i > 0 );
1116
1120
return 0 ;
0 commit comments