Commit 961b91bd authored by Martin v. Löwis's avatar Martin v. Löwis

Correction of patch #1455898: In the mbcs decoder, set final=False

for stream decoder, but final=True for the decode function.
parent 5c387f2e
...@@ -15,39 +15,31 @@ import codecs ...@@ -15,39 +15,31 @@ import codecs
### Codec APIs ### Codec APIs
class Codec(codecs.Codec): encode = mbcs_encode
# Note: Binding these as C functions will result in the class not def decode(input, errors='strict'):
# converting them to methods. This is intended. return mbcs_decode(input, errors, True)
encode = mbcs_encode
decode = mbcs_decode
class IncrementalEncoder(codecs.IncrementalEncoder): class IncrementalEncoder(codecs.IncrementalEncoder):
def encode(self, input, final=False): def encode(self, input, final=False):
return mbcs_encode(input,self.errors)[0] return mbcs_encode(input, self.errors)[0]
class IncrementalDecoder(codecs.BufferedIncrementalDecoder): class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
def _buffer_decode(self, input, errors, final): _buffer_decode = mbcs_decode
return mbcs_decode(input,self.errors,final)
class StreamWriter(Codec,codecs.StreamWriter):
pass
class StreamReader(Codec,codecs.StreamReader): class StreamWriter(codecs.StreamWriter):
pass encode = mbcs_encode
class StreamConverter(StreamWriter,StreamReader):
encode = codecs.mbcs_decode class StreamReader(codecs.StreamReader):
decode = codecs.mbcs_encode decode = mbcs_decode
### encodings module API ### encodings module API
def getregentry(): def getregentry():
return codecs.CodecInfo( return codecs.CodecInfo(
name='mbcs', name='mbcs',
encode=Codec.encode, encode=encode,
decode=Codec.decode, decode=decode,
incrementalencoder=IncrementalEncoder, incrementalencoder=IncrementalEncoder,
incrementaldecoder=IncrementalDecoder, incrementaldecoder=IncrementalDecoder,
streamreader=StreamReader, streamreader=StreamReader,
......
...@@ -64,6 +64,9 @@ Core and builtins ...@@ -64,6 +64,9 @@ Core and builtins
Library Library
------- -------
- Correction of patch #1455898: In the mbcs decoder, set final=False
for stream decoder, but final=True for the decode function.
- os.urandom no longer masks unrelated exceptions like SystemExit or - os.urandom no longer masks unrelated exceptions like SystemExit or
KeyboardInterrupt. KeyboardInterrupt.
......
...@@ -481,7 +481,7 @@ mbcs_decode(PyObject *self, ...@@ -481,7 +481,7 @@ mbcs_decode(PyObject *self,
const char *data; const char *data;
Py_ssize_t size, consumed; Py_ssize_t size, consumed;
const char *errors = NULL; const char *errors = NULL;
int final = 1; int final = 0;
PyObject *decoded; PyObject *decoded;
if (!PyArg_ParseTuple(args, "t#|zi:mbcs_decode", if (!PyArg_ParseTuple(args, "t#|zi:mbcs_decode",
......
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