@@ -506,7 +506,7 @@ np_ubyte(char *p, PyObject *v, const formatdef *f)
506
506
"ubyte format requires 0 <= number <= 255" );
507
507
return -1 ;
508
508
}
509
- * p = (char )x ;
509
+ * ( unsigned char * ) p = (unsigned char )x ;
510
510
return 0 ;
511
511
}
512
512
@@ -814,6 +814,7 @@ bp_int(char *p, PyObject *v, const formatdef *f)
814
814
{
815
815
long x ;
816
816
Py_ssize_t i ;
817
+ unsigned char * q = (unsigned char * )p ;
817
818
if (get_long (v , & x ) < 0 )
818
819
return -1 ;
819
820
i = f -> size ;
@@ -826,7 +827,7 @@ bp_int(char *p, PyObject *v, const formatdef *f)
826
827
#endif
827
828
}
828
829
do {
829
- p [-- i ] = (char )x ;
830
+ q [-- i ] = (unsigned char )( x & 0xffL ) ;
830
831
x >>= 8 ;
831
832
} while (i > 0 );
832
833
return 0 ;
@@ -837,6 +838,7 @@ bp_uint(char *p, PyObject *v, const formatdef *f)
837
838
{
838
839
unsigned long x ;
839
840
Py_ssize_t i ;
841
+ unsigned char * q = (unsigned char * )p ;
840
842
if (get_ulong (v , & x ) < 0 )
841
843
return -1 ;
842
844
i = f -> size ;
@@ -847,7 +849,7 @@ bp_uint(char *p, PyObject *v, const formatdef *f)
847
849
return _range_error (f , 1 );
848
850
}
849
851
do {
850
- p [-- i ] = (char )x ;
852
+ q [-- i ] = (unsigned char )( x & 0xffUL ) ;
851
853
x >>= 8 ;
852
854
} while (i > 0 );
853
855
return 0 ;
@@ -1034,6 +1036,7 @@ lp_int(char *p, PyObject *v, const formatdef *f)
1034
1036
{
1035
1037
long x ;
1036
1038
Py_ssize_t i ;
1039
+ unsigned char * q = (unsigned char * )p ;
1037
1040
if (get_long (v , & x ) < 0 )
1038
1041
return -1 ;
1039
1042
i = f -> size ;
@@ -1046,7 +1049,7 @@ lp_int(char *p, PyObject *v, const formatdef *f)
1046
1049
#endif
1047
1050
}
1048
1051
do {
1049
- * p ++ = (char )x ;
1052
+ * q ++ = (unsigned char )( x & 0xffL ) ;
1050
1053
x >>= 8 ;
1051
1054
} while (-- i > 0 );
1052
1055
return 0 ;
@@ -1057,6 +1060,7 @@ lp_uint(char *p, PyObject *v, const formatdef *f)
1057
1060
{
1058
1061
unsigned long x ;
1059
1062
Py_ssize_t i ;
1063
+ unsigned char * q = (unsigned char * )p ;
1060
1064
if (get_ulong (v , & x ) < 0 )
1061
1065
return -1 ;
1062
1066
i = f -> size ;
@@ -1067,7 +1071,7 @@ lp_uint(char *p, PyObject *v, const formatdef *f)
1067
1071
return _range_error (f , 1 );
1068
1072
}
1069
1073
do {
1070
- * p ++ = (char )x ;
1074
+ * q ++ = (unsigned char )( x & 0xffUL ) ;
1071
1075
x >>= 8 ;
1072
1076
} while (-- i > 0 );
1073
1077
return 0 ;
0 commit comments