diff options
-rw-r--r-- | Lib/encodings/mbcs.py | 30 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/_codecsmodule.c | 2 |
3 files changed, 15 insertions, 20 deletions
diff --git a/Lib/encodings/mbcs.py b/Lib/encodings/mbcs.py index ccf08e3..baf46cb 100644 --- a/Lib/encodings/mbcs.py +++ b/Lib/encodings/mbcs.py @@ -15,39 +15,31 @@ import codecs ### Codec APIs -class Codec(codecs.Codec): +encode = mbcs_encode - # Note: Binding these as C functions will result in the class not - # converting them to methods. This is intended. - encode = mbcs_encode - decode = mbcs_decode +def decode(input, errors='strict'): + return mbcs_decode(input, errors, True) class IncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input, final=False): - return mbcs_encode(input,self.errors)[0] + return mbcs_encode(input, self.errors)[0] class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - def _buffer_decode(self, input, errors, final): - return mbcs_decode(input,self.errors,final) - -class StreamWriter(Codec,codecs.StreamWriter): - pass + _buffer_decode = mbcs_decode -class StreamReader(Codec,codecs.StreamReader): - pass - -class StreamConverter(StreamWriter,StreamReader): +class StreamWriter(codecs.StreamWriter): + encode = mbcs_encode - encode = codecs.mbcs_decode - decode = codecs.mbcs_encode +class StreamReader(codecs.StreamReader): + decode = mbcs_decode ### encodings module API def getregentry(): return codecs.CodecInfo( name='mbcs', - encode=Codec.encode, - decode=Codec.decode, + encode=encode, + decode=decode, incrementalencoder=IncrementalEncoder, incrementaldecoder=IncrementalDecoder, streamreader=StreamReader, @@ -64,6 +64,9 @@ Core and builtins 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 KeyboardInterrupt. diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c index 6d384b7..405fd7a 100644 --- a/Modules/_codecsmodule.c +++ b/Modules/_codecsmodule.c @@ -481,7 +481,7 @@ mbcs_decode(PyObject *self, const char *data; Py_ssize_t size, consumed; const char *errors = NULL; - int final = 1; + int final = 0; PyObject *decoded; if (!PyArg_ParseTuple(args, "t#|zi:mbcs_decode", |