Kaydet (Commit) e35553e2 authored tarafından Walter Dörwald's avatar Walter Dörwald

Fix io.StringIO for wide Python builds.

üst 9d2ac227
...@@ -598,6 +598,8 @@ class StringIO(_MemoryIOMixin): ...@@ -598,6 +598,8 @@ class StringIO(_MemoryIOMixin):
# Reuses the same code as BytesIO, but encode strings on the way in # Reuses the same code as BytesIO, but encode strings on the way in
# and decode them on the way out. # and decode them on the way out.
charsize = len("!".encode("unicode-internal"))
def __init__(self, initial_string=None): def __init__(self, initial_string=None):
if initial_string is not None: if initial_string is not None:
buffer = initial_string.encode("unicode-internal") buffer = initial_string.encode("unicode-internal")
...@@ -609,21 +611,24 @@ class StringIO(_MemoryIOMixin): ...@@ -609,21 +611,24 @@ class StringIO(_MemoryIOMixin):
return self._buffer.encode("unicode-internal") return self._buffer.encode("unicode-internal")
def read(self, n=-1): def read(self, n=-1):
return super(StringIO, self).read(n*2).decode("unicode-internal") return super(StringIO, self).read(n*self.charsize) \
.decode("unicode-internal")
def write(self, s): def write(self, s):
return super(StringIO, self).write(s.encode("unicode-internal"))//2 return super(StringIO, self).write(s.encode("unicode-internal")) \
//self.charsize
def seek(self, pos, whence=0): def seek(self, pos, whence=0):
return super(StringIO, self).seek(2*pos, whence)//2 return super(StringIO, self).seek(self.charsize*pos, whence) \
//self.charsize
def tell(self): def tell(self):
return super(StringIO, self).tell()//2 return super(StringIO, self).tell()//self.charsize
def truncate(self, pos=None): def truncate(self, pos=None):
if pos is not None: if pos is not None:
pos *= 2 pos *= self.charsize
return super(StringIO, self).truncate(pos)//2 return super(StringIO, self).truncate(pos)//self.charsize
def readinto(self, b: bytes) -> int: def readinto(self, b: bytes) -> int:
self._unsupported("readinto") self._unsupported("readinto")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment