]> granicus.if.org Git - python/commitdiff
Fix reallocation bug in unicode.translate(): The code was comparing
authorWalter Dörwald <walter@livinglogic.de>
Thu, 5 Feb 2004 17:36:00 +0000 (17:36 +0000)
committerWalter Dörwald <walter@livinglogic.de>
Thu, 5 Feb 2004 17:36:00 +0000 (17:36 +0000)
characters instead of character pointers to determine space requirements.

Lib/test/test_unicode.py
Objects/unicodeobject.c

index 18a2d46ba98323fd02cc7b463f316bc0d8dc65bc..5ce2842f4e14f340b9f53edc2e0a7f7a89519366 100644 (file)
@@ -136,6 +136,7 @@ class UnicodeTest(
         self.checkequalnofix(u'iiix', u'abababc', 'translate', {ord('a'):None, ord('b'):ord('i'), ord('c'):u'x'})
         self.checkequalnofix(u'<i><i><i>c', u'abababc', 'translate', {ord('a'):None, ord('b'):u'<i>'})
         self.checkequalnofix(u'c', u'abababc', 'translate', {ord('a'):None, ord('b'):u''})
+        self.checkequalnofix(u'xyyx', u'xzx', 'translate', {ord('z'):u'yy'})
 
         self.assertRaises(TypeError, u'hello'.translate)
         self.assertRaises(TypeError, u'abababc'.translate, {ord('a'):''})
index a218ddb6eb73c9b72e666f0c088fb1c4c5bf1fa0..e3bef575406fc9aeec9ed29fadc5a1ac781cef8b 100644 (file)
@@ -3283,7 +3283,7 @@ int charmaptranslate_output(const Py_UNICODE *startinp, const Py_UNICODE *curinp
        else if (repsize!=0) {
            /* more than one character */
            int requiredsize = (*outp-PyUnicode_AS_UNICODE(*outobj)) +
-               (insize - (*curinp-*startinp)) +
+               (insize - (curinp-startinp)) +
                repsize - 1;
            if (charmaptranslate_makespace(outobj, outp, requiredsize))
                return -1;