diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index 53772246eb8..9237af0b638 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -39,3 +39,6 @@ def to_little_endian_string(value, nbytes): base = 0 else: base >>= 1 + +# Simple-minded check for SF 588452: Debug build crashes +marshal.dumps([128] * 1000) diff --git a/Python/marshal.c b/Python/marshal.c index 0df46cf1636..c00586dc932 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -84,17 +84,17 @@ w_string(char *s, int n, WFILE *p) static void w_short(int x, WFILE *p) { - w_byte( x & 0xff, p); - w_byte((x>> 8) & 0xff, p); + w_byte((char)( x & 0xff), p); + w_byte((char)((x>> 8) & 0xff), p); } static void w_long(long x, WFILE *p) { - w_byte((int)( x & 0xff), p); - w_byte((int)((x>> 8) & 0xff), p); - w_byte((int)((x>>16) & 0xff), p); - w_byte((int)((x>>24) & 0xff), p); + w_byte((char)( x & 0xff), p); + w_byte((char)((x>> 8) & 0xff), p); + w_byte((char)((x>>16) & 0xff), p); + w_byte((char)((x>>24) & 0xff), p); } #if SIZEOF_LONG > 4