mirror of
https://github.com/python/cpython.git
synced 2024-11-24 02:15:30 +08:00
PyUnicode_CopyCharacters() fails if 'to' has more than 1 reference
This commit is contained in:
parent
7c8c1ea3ec
commit
f5ca1a21a5
@ -522,7 +522,8 @@ PyAPI_FUNC(int) _PyUnicode_Ready(
|
||||
character conversion when necessary and falls back to memcpy if possible.
|
||||
|
||||
Fail if 'to' is smaller than how_many or smaller than len(from)-from_start,
|
||||
or if kind(from[from_start:from_start+how_many]) > kind(to).
|
||||
or if kind(from[from_start:from_start+how_many]) > kind(to), or if to has
|
||||
more than 1 reference.
|
||||
|
||||
Return the number of written character, or return -1 and raise an exception
|
||||
on error.
|
||||
|
@ -631,6 +631,14 @@ PyUnicode_CopyCharacters(PyObject *to, Py_ssize_t to_start,
|
||||
how_many, to_start, PyUnicode_GET_LENGTH(to));
|
||||
return -1;
|
||||
}
|
||||
if (how_many == 0)
|
||||
return 0;
|
||||
|
||||
if (Py_REFCNT(to) != 1) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"Cannot modify a string having more than 1 reference");
|
||||
return -1;
|
||||
}
|
||||
|
||||
from_kind = PyUnicode_KIND(from);
|
||||
to_kind = PyUnicode_KIND(to);
|
||||
|
Loading…
Reference in New Issue
Block a user