summaryrefslogtreecommitdiffstats
path: root/Python/codecs.c
diff options
context:
space:
mode:
authorÉric Araujo <merwok@netwok.org>2012-11-03 21:09:37 (GMT)
committerÉric Araujo <merwok@netwok.org>2012-11-03 21:09:37 (GMT)
commit95b4ec8ee3ffba5a6ac9f0e4024db1393c1c9577 (patch)
tree10bf3e364127e0af83ca7482fecdff9037c56e4e /Python/codecs.c
parent8c997fa8bf5970eee0762664f598d13d5c5a48a8 (diff)
parent1e58ae44dfb60c6cb87a072498a68eb10e416279 (diff)
downloadcpython-95b4ec8ee3ffba5a6ac9f0e4024db1393c1c9577.zip
cpython-95b4ec8ee3ffba5a6ac9f0e4024db1393c1c9577.tar.gz
cpython-95b4ec8ee3ffba5a6ac9f0e4024db1393c1c9577.tar.bz2
Branch merge
Diffstat (limited to 'Python/codecs.c')
-rw-r--r--Python/codecs.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Python/codecs.c b/Python/codecs.c
index 5cfb1c9..37ae41b 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -791,10 +791,10 @@ PyCodec_SurrogatePassErrors(PyObject *exc)
/* Try decoding a single surrogate character. If
there are more, let the codec call us again. */
p += start;
- if (strlen(p) > 2 &&
- ((p[0] & 0xf0) == 0xe0 ||
- (p[1] & 0xc0) == 0x80 ||
- (p[2] & 0xc0) == 0x80)) {
+ if (PyBytes_GET_SIZE(object) - start >= 3 &&
+ (p[0] & 0xf0) == 0xe0 &&
+ (p[1] & 0xc0) == 0x80 &&
+ (p[2] & 0xc0) == 0x80) {
/* it's a three-byte code */
ch = ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) + (p[2] & 0x3f);
if (!Py_UNICODE_IS_SURROGATE(ch))