[Python-checkins] cpython: Issue #15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and

victor.stinner python-checkins at python.org
Mon Jan 26 17:05:30 CET 2015


https://hg.python.org/cpython/rev/e124aab5d9a0
changeset:   94321:e124aab5d9a0
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Mon Jan 26 16:41:32 2015 +0100
summary:
  Issue #15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
PyUnicode_EncodeCodePage() now raise an exception if the object is not an
Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on
platforms other than Windows. Patch written by Campbell Barton.

files:
  Misc/ACKS               |  1 +
  Misc/NEWS               |  5 +++++
  Objects/unicodeobject.c |  9 +++++----
  3 files changed, 11 insertions(+), 4 deletions(-)


diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -89,6 +89,7 @@
 Cesar Eduardo Barros
 Des Barry
 Ulf Bartelt
+Campbell Barton
 Don Bashford
 Pior Bastida
 Nick Bastin
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,11 @@
 Core and Builtins
 -----------------
 
+- Issue #15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
+  PyUnicode_EncodeCodePage() now raise an exception if the object is not an
+  Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on
+  platforms other than Windows. Patch written by Campbell Barton.
+
 - Issue #21408: The default __ne__() now returns NotImplemented if __eq__()
   returned NotImplemented.  Original patch by Martin Panter.
 
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -7431,6 +7431,11 @@
     Py_ssize_t offset;
     int chunk_len, ret, done;
 
+    if (!PyUnicode_Check(unicode)) {
+        PyErr_BadArgument();
+        return NULL;
+    }
+
     if (PyUnicode_READY(unicode) == -1)
         return NULL;
     len = PyUnicode_GET_LENGTH(unicode);
@@ -7504,10 +7509,6 @@
 PyObject *
 PyUnicode_AsMBCSString(PyObject *unicode)
 {
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
     return PyUnicode_EncodeCodePage(CP_ACP, unicode, NULL);
 }
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list