From bc3376f66a680a0a6c003041cfca55cae05fcc61 Mon Sep 17 00:00:00 2001 From: Philip Jenvey Date: Wed, 9 Jun 2010 17:55:28 +0000 Subject: [PATCH] Merged revisions 79779 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r79779 | philip.jenvey | 2010-04-04 19:51:51 -0700 (Sun, 04 Apr 2010) | 2 lines fix escape_encode to return the correct consumed size ........ --- Lib/test/test_codecs.py | 3 +++ Misc/NEWS | 2 ++ Modules/_codecsmodule.c | 9 +++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index 52e8dc9492..a46edae8fd 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -829,6 +829,9 @@ class UnicodeInternalTest(unittest.TestCase): "UnicodeInternalTest") self.assertEquals((u"ab", 12), ignored) + encoder = codecs.getencoder("string-escape") + self.assertEquals(encoder(r'\x00')[1], 4) + # From http://www.gnu.org/software/libidn/draft-josefsson-idn-test-vectors.html nameprep_tests = [ # 3.1 Map to nothing. diff --git a/Misc/NEWS b/Misc/NEWS index f1cf949223..88a148ae78 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -67,6 +67,8 @@ C-API Library ------- +- Fix codecs.escape_encode to return the correct consumed size. + - Issue #6470: Drop UNC prefix in FixTk. - Issue #8833: tarfile created hard link entries with a size field != 0 by diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c index 5b501441b1..3b07b6d72f 100644 --- a/Modules/_codecsmodule.c +++ b/Modules/_codecsmodule.c @@ -179,12 +179,13 @@ escape_encode(PyObject *self, PyObject *str; const char *errors = NULL; char *buf; - Py_ssize_t len; + Py_ssize_t consumed, len; - if (!PyArg_ParseTuple(args, "O!|z:escape_encode", - &PyString_Type, &str, &errors)) + if (!PyArg_ParseTuple(args, "S|z:escape_encode", + &str, &errors)) return NULL; + consumed = PyString_GET_SIZE(str); str = PyString_Repr(str, 0); if (!str) return NULL; @@ -196,7 +197,7 @@ escape_encode(PyObject *self, if (_PyString_Resize(&str, len-2) < 0) return NULL; - return codec_tuple(str, PyString_Size(str)); + return codec_tuple(str, consumed); } #ifdef Py_USING_UNICODE -- 2.50.1