[pypy-svn] r16643 - pypy/release/0.7.x/pypy/objspace/std
ac at codespeak.net
ac at codespeak.net
Fri Aug 26 17:32:17 CEST 2005
Author: ac
Date: Fri Aug 26 17:32:16 2005
New Revision: 16643
Modified:
pypy/release/0.7.x/pypy/objspace/std/unicodeobject.py
Log:
Fix IndexError when doing repr on a string ending with a UTF-16 surrogate.
Modified: pypy/release/0.7.x/pypy/objspace/std/unicodeobject.py
==============================================================================
--- pypy/release/0.7.x/pypy/objspace/std/unicodeobject.py (original)
+++ pypy/release/0.7.x/pypy/objspace/std/unicodeobject.py Fri Aug 26 17:32:16 2005
@@ -939,25 +939,26 @@
j += 1
continue
if code >= 0xD800 and code < 0xDC00:
- ch2 = chars[j+1]
- code2 = ord(ch2)
- if code2 >= 0xDC00 and code2 <= 0xDFFF:
- code = (((code & 0x03FF) << 10) | (code2 & 0x03FF)) + 0x00010000
- if i + 12 > len(result):
- result.extend(['\0'] * 100)
- result[i] = '\\'
- result[i + 1] = "U"
- result[i + 2] = hexdigits[(code >> 28) & 0xf]
- result[i + 3] = hexdigits[(code >> 24) & 0xf]
- result[i + 4] = hexdigits[(code >> 20) & 0xf]
- result[i + 5] = hexdigits[(code >> 16) & 0xf]
- result[i + 6] = hexdigits[(code >> 12) & 0xf]
- result[i + 7] = hexdigits[(code >> 8) & 0xf]
- result[i + 8] = hexdigits[(code >> 4) & 0xf]
- result[i + 9] = hexdigits[(code >> 0) & 0xf]
- i += 10
- j += 2
- continue
+ if j < size - 1:
+ ch2 = chars[j+1]
+ code2 = ord(ch2)
+ if code2 >= 0xDC00 and code2 <= 0xDFFF:
+ code = (((code & 0x03FF) << 10) | (code2 & 0x03FF)) + 0x00010000
+ if i + 12 > len(result):
+ result.extend(['\0'] * 100)
+ result[i] = '\\'
+ result[i + 1] = "U"
+ result[i + 2] = hexdigits[(code >> 28) & 0xf]
+ result[i + 3] = hexdigits[(code >> 24) & 0xf]
+ result[i + 4] = hexdigits[(code >> 20) & 0xf]
+ result[i + 5] = hexdigits[(code >> 16) & 0xf]
+ result[i + 6] = hexdigits[(code >> 12) & 0xf]
+ result[i + 7] = hexdigits[(code >> 8) & 0xf]
+ result[i + 8] = hexdigits[(code >> 4) & 0xf]
+ result[i + 9] = hexdigits[(code >> 0) & 0xf]
+ i += 10
+ j += 2
+ continue
if code >= 0x100:
result[i] = '\\'
More information about the Pypy-commit
mailing list