[pypy-svn] r16183 - pypy/dist/pypy/objspace/std
arigo at codespeak.net
arigo at codespeak.net
Sat Aug 20 14:28:06 CEST 2005
Author: arigo
Date: Sat Aug 20 14:28:04 2005
New Revision: 16183
Modified:
pypy/dist/pypy/objspace/std/unicodeobject.py
Log:
Can't use str() on unicode chars, nor comparison between non-unicode and
unicode characters.
Fix for unicode characters \u0100 and \U000010000.
Modified: pypy/dist/pypy/objspace/std/unicodeobject.py
==============================================================================
--- pypy/dist/pypy/objspace/std/unicodeobject.py (original)
+++ pypy/dist/pypy/objspace/std/unicodeobject.py Sat Aug 20 14:28:04 2005
@@ -904,11 +904,6 @@
result[1] = quote
i = 2
for ch in chars:
- if ch == u'\\' or ch == str(quote) :
- result[i] = '\\'
- result[i + 1] = str(ch)
- i += 2
- continue
## if ch == u"'":
## quote ='''"'''
## result[1] = quote
@@ -917,7 +912,7 @@
## i += 1
## continue
code = ord(ch)
- if code > 0x10000:
+ if code >= 0x10000:
# Resize if needed
if i + 12 > len(result):
result.extend(['\0'] * 100)
@@ -933,7 +928,7 @@
result[i + 9] = hexdigits[(code >> 0) & 0xf]
i += 10
continue
- if code > 0x100:
+ if code >= 0x100:
result[i] = '\\'
result[i + 1] = "u"
result[i + 2] = hexdigits[(code >> 12) & 0xf]
@@ -942,6 +937,11 @@
result[i + 5] = hexdigits[(code >> 0) & 0xf]
i += 6
continue
+ if code == ord('\\') or code == ord(quote):
+ result[i] = '\\'
+ result[i + 1] = chr(code)
+ i += 2
+ continue
if code == ord('\t'):
result[i] = '\\'
result[i + 1] = "t"
More information about the Pypy-commit
mailing list