Mercurial > cpython-lru_cache-weakref
diff Python/codecs.c @ 76573:1439e2d1f490
Check newly created consistency using _PyUnicode_CheckConsistency(str, 1)
* In debug mode, fill the string data with invalid characters
* Simplify also reference counting in PyCodec_BackslashReplaceErrors()
and PyCodec_XMLCharRefReplaceError()
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Fri, 27 Apr 2012 13:55:39 +0200 |
| parents | f55529aa023d |
| children | fd41c6b4de57 |
line wrap: on
line diff
--- a/Python/codecs.c Thu Apr 26 17:05:31 2012 +0200 +++ b/Python/codecs.c Fri Apr 27 13:55:39 2012 +0200 @@ -534,6 +534,7 @@ data = PyUnicode_DATA(res); for (i = 0; i < len; ++i) PyUnicode_WRITE(kind, data, i, '?'); + assert(_PyUnicode_CheckConsistency(res, 1)); return Py_BuildValue("(Nn)", res, end); } else if (PyObject_IsInstance(exc, PyExc_UnicodeDecodeError)) { @@ -559,6 +560,7 @@ data = PyUnicode_DATA(res); for (i=0; i < len; i++) PyUnicode_WRITE(kind, data, i, Py_UNICODE_REPLACEMENT_CHARACTER); + assert(_PyUnicode_CheckConsistency(res, 1)); return Py_BuildValue("(Nn)", res, end); } else { @@ -652,8 +654,8 @@ } *outp++ = ';'; } - restuple = Py_BuildValue("(On)", res, end); - Py_DECREF(res); + assert(_PyUnicode_CheckConsistency(res, 1)); + restuple = Py_BuildValue("(Nn)", res, end); Py_DECREF(object); return restuple; } @@ -720,8 +722,8 @@ *outp++ = Py_hexdigits[c&0xf]; } - restuple = Py_BuildValue("(On)", res, end); - Py_DECREF(res); + assert(_PyUnicode_CheckConsistency(res, 1)); + restuple = Py_BuildValue("(Nn)", res, end); Py_DECREF(object); return restuple; }
