diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2009-01-22 11:59:55 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2009-01-22 11:59:55 (GMT) |
commit | 44bf631ad9996004cbd3e0cb03dd94febcba950f (patch) | |
tree | 7bcd62f56229eae1d97c30168433e977049f58a9 | |
parent | 81fabdb437eea29e2616de58e6952b7ef2e5542f (diff) | |
download | cpython-44bf631ad9996004cbd3e0cb03dd94febcba950f.zip cpython-44bf631ad9996004cbd3e0cb03dd94febcba950f.tar.gz cpython-44bf631ad9996004cbd3e0cb03dd94febcba950f.tar.bz2 |
Followup of #4874: also fix multibytecodec.c
-rw-r--r-- | Lib/test/test_multibytecodec.py | 12 | ||||
-rw-r--r-- | Modules/cjkcodecs/multibytecodec.c | 4 |
2 files changed, 13 insertions, 3 deletions
diff --git a/Lib/test/test_multibytecodec.py b/Lib/test/test_multibytecodec.py index 7962d5e..2f64867 100644 --- a/Lib/test/test_multibytecodec.py +++ b/Lib/test/test_multibytecodec.py @@ -44,7 +44,7 @@ class Test_MultibyteCodec(unittest.TestCase): myreplace = lambda exc: ('', sys.maxsize+1) codecs.register_error('test.cjktest', myreplace) self.assertRaises(IndexError, dec, - 'apple\x92ham\x93spam', 'test.cjktest') + b'apple\x92ham\x93spam', 'test.cjktest') def test_codingspec(self): try: @@ -61,6 +61,10 @@ class Test_MultibyteCodec(unittest.TestCase): self.assertRaises(AttributeError, _multibytecodec.MultibyteStreamWriter, None) + def test_decode_unicode(self): + # Trying to decode an unicode string should raise a TypeError + for enc in ALL_CJKENCODINGS: + self.assertRaises(TypeError, codecs.getdecoder(enc), "") class Test_IncrementalEncoder(unittest.TestCase): @@ -146,6 +150,12 @@ class Test_IncrementalDecoder(unittest.TestCase): self.assertRaises(UnicodeDecodeError, decoder.decode, b'', True) self.assertEqual(decoder.decode(b'B@$'), '\u4e16') + def test_decode_unicode(self): + # Trying to decode an unicode string should raise a TypeError + for enc in ALL_CJKENCODINGS: + decoder = codecs.getincrementaldecoder(enc)() + self.assertRaises(TypeError, decoder.decode, "") + class Test_StreamReader(unittest.TestCase): def test_bug1728403(self): try: diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 2732270..82dfd49 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -612,7 +612,7 @@ MultibyteCodec_Decode(MultibyteCodecObject *self, const char *data, *errors = NULL; Py_ssize_t datalen, finalsize; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|z:decode", + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|z:decode", codeckwarglist, &pdata, &errors)) return NULL; data = pdata.buf; @@ -1038,7 +1038,7 @@ mbidecoder_decode(MultibyteIncrementalDecoderObject *self, Py_ssize_t wsize, finalsize = 0, size, origpending; int final = 0; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i:decode", + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|i:decode", incrementalkwarglist, &pdata, &final)) return NULL; data = pdata.buf; |