mirror of https://github.com/python/cpython.git
Correction of patch #1455898: In the mbcs decoder, set final=False
for stream decoder, but final=True for the decode function.
This commit is contained in:
parent
5c387f2e5d
commit
961b91bd3c
|
@ -15,39 +15,31 @@
|
||||||
|
|
||||||
### 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):
|
class StreamWriter(codecs.StreamWriter):
|
||||||
pass
|
encode = mbcs_encode
|
||||||
|
|
||||||
class StreamReader(Codec,codecs.StreamReader):
|
class StreamReader(codecs.StreamReader):
|
||||||
pass
|
decode = mbcs_decode
|
||||||
|
|
||||||
class StreamConverter(StreamWriter,StreamReader):
|
|
||||||
|
|
||||||
encode = codecs.mbcs_decode
|
|
||||||
decode = codecs.mbcs_encode
|
|
||||||
|
|
||||||
### 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
|
||||||
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,
|
||||||
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",
|
||||||
|
|
Loading…
Reference in New Issue