From 961b91bd3c48af639acbf20bbf15a85e7152ff6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Wed, 2 Aug 2006 13:53:55 +0000 Subject: Correction of patch #1455898: In the mbcs decoder, set final=False for stream decoder, but final=True for the decode function. --- Lib/encodings/mbcs.py | 30 +++++++++++------------------- Misc/NEWS | 3 +++ 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, diff --git a/Misc/NEWS b/Misc/NEWS index 13323f5..1923b4f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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", -- cgit v0.12