[Python-checkins] cpython: PyUnicode_Resize(): warn about canonical representation

victor.stinner python-checkins at python.org
Mon Dec 12 13:21:57 CET 2011


http://hg.python.org/cpython/rev/3ad7d01acbf4
changeset: 73947:3ad7d01acbf4
user: Victor Stinner <victor.stinner at haypocalc.com>
date: Mon Dec 12 13:24:15 2011 +0100
summary:
 PyUnicode_Resize(): warn about canonical representation
Call also directly unicode_resize() in unicodeobject.c
files:
 Include/unicodeobject.h | 5 ++++-
 Objects/unicodeobject.c | 25 +++++++++++++------------
 2 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -779,7 +779,10 @@
 a new string and copy characters), or create a new string.
 
 Error handling is implemented as follows: an exception is set, -1
- is returned and *unicode left untouched. */
+ is returned and *unicode left untouched.
+
+ WARNING: The function doesn't check string content, the result may not be a
+ string in canonical representation. */
 
 PyAPI_FUNC(int) PyUnicode_Resize(
 PyObject **unicode, /* Pointer to the Unicode object */
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5040,7 +5040,7 @@
 *consumed = (const char *)q-starts;
 
 /* Adjust length */
- if (PyUnicode_Resize(&unicode, outpos) < 0)
+ if (unicode_resize(&unicode, outpos) < 0)
 goto onError;
 
 Py_XDECREF(errorHandler);
@@ -5404,7 +5404,7 @@
 *consumed = (const char *)q-starts;
 
 /* Adjust length */
- if (PyUnicode_Resize(&unicode, outpos) < 0)
+ if (unicode_resize(&unicode, outpos) < 0)
 goto onError;
 
 Py_XDECREF(errorHandler);
@@ -5824,7 +5824,7 @@
 }
 #undef WRITECHAR
 
- if (PyUnicode_Resize(&v, i) < 0)
+ if (unicode_resize(&v, i) < 0)
 goto onError;
 Py_XDECREF(errorHandler);
 Py_XDECREF(exc);
@@ -6086,7 +6086,7 @@
 nextByte:
 ;
 }
- if (PyUnicode_Resize(&v, outpos) < 0)
+ if (unicode_resize(&v, outpos) < 0)
 goto onError;
 Py_XDECREF(errorHandler);
 Py_XDECREF(exc);
@@ -6273,7 +6273,7 @@
 goto onError;
 }
 
- if (PyUnicode_Resize(&v, outpos) < 0)
+ if (unicode_resize(&v, outpos) < 0)
 goto onError;
 Py_XDECREF(errorHandler);
 Py_XDECREF(exc);
@@ -6727,7 +6727,7 @@
 data = PyUnicode_DATA(v);
 }
 }
- if (PyUnicode_Resize(&v, outpos) < 0)
+ if (unicode_resize(&v, outpos) < 0)
 goto onError;
 Py_XDECREF(errorHandler);
 Py_XDECREF(exc);
@@ -6874,7 +6874,7 @@
 else {
 /* Extend unicode object */
 Py_ssize_t n = PyUnicode_GET_SIZE(*v);
- if (PyUnicode_Resize(v, n + outsize) < 0)
+ if (unicode_resize(v, n + outsize) < 0)
 return -1;
 out = PyUnicode_AS_UNICODE(*v) + n;
 }
@@ -6958,7 +6958,7 @@
 PyErr_NoMemory();
 goto error;
 }
- if (PyUnicode_Resize(v, n + size * Py_ARRAY_LENGTH(buffer)) < 0)
+ if (unicode_resize(v, n + size * Py_ARRAY_LENGTH(buffer)) < 0)
 goto error;
 startout = PyUnicode_AS_UNICODE(*v) + n;
 }
@@ -7017,7 +7017,7 @@
 /* Extend unicode object */
 outsize = out - startout;
 assert(outsize <= PyUnicode_WSTR_LENGTH(*v));
- if (PyUnicode_Resize(v, outsize) < 0)
+ if (unicode_resize(v, outsize) < 0)
 goto error;
 ret = size;
 
@@ -7664,8 +7664,9 @@
 (targetsize << 2);
 extrachars += needed;
 /* XXX overflow detection missing */
- if (PyUnicode_Resize(&v,
- PyUnicode_GET_LENGTH(v) + needed) < 0) {
+ if (unicode_resize(&v,
+ PyUnicode_GET_LENGTH(v) + needed) < 0)
+ {
 Py_DECREF(x);
 goto onError;
 }
@@ -7689,7 +7690,7 @@
 ++s;
 }
 }
- if (PyUnicode_Resize(&v, outpos) < 0)
+ if (unicode_resize(&v, outpos) < 0)
 goto onError;
 Py_XDECREF(errorHandler);
 Py_XDECREF(exc);
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /