def test_maketrans(self):
transtable = b'\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`xyzdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377'
-
self.assertEqual(self.type2test.maketrans(b'abc', b'xyz'), transtable)
+ transtable = b'\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374xyz'
+ self.assertEqual(self.type2test.maketrans(b'\375\376\377', b'xyz'), transtable)
self.assertRaises(ValueError, self.type2test.maketrans, b'abc', b'xyzq')
self.assertRaises(TypeError, self.type2test.maketrans, 'abc', 'def')
def test_main():
- test.support.run_unittest(BytesTest)
- test.support.run_unittest(ByteArrayTest)
- test.support.run_unittest(AssortedBytesTest)
- test.support.run_unittest(BytesAsStringTest)
- test.support.run_unittest(ByteArrayAsStringTest)
- test.support.run_unittest(ByteArraySubclassTest)
- test.support.run_unittest(BytearrayPEP3137Test)
+ test.support.run_unittest(
+ BytesTest, AssortedBytesTest, BytesAsStringTest,
+ ByteArrayTest, ByteArrayAsStringTest, ByteArraySubclassTest,
+ BytearrayPEP3137Test)
if __name__ == "__main__":
test_main()
Core and Builtins
-----------------
+- Issue #7065: Fix a crash in bytes.maketrans and bytearray.maketrans when
+ using byte values greater than 127. Patch by egreen.
+
- Issue #1571184: The Unicode database contains properties for more characters.
The tables for code points representing numeric values, white spaces or line
breaks are now generated from the official Unicode Character Database files,
{
PyObject *frm, *to, *res = NULL;
Py_buffer bfrm, bto;
- int i;
+ Py_ssize_t i;
char *p;
bfrm.len = -1;
for (i = 0; i < 256; i++)
p[i] = i;
for (i = 0; i < bfrm.len; i++) {
- p[(int)((char *)bfrm.buf)[i]] = ((char *)bto.buf)[i];
+ p[((unsigned char *)bfrm.buf)[i]] = ((char *)bto.buf)[i];
}
done: