Mercurial > cpython-lru_cache-weakref
diff Objects/memoryobject.c @ 62964:189fa92d15dc
Issue #7616: Fix copying of overlapping memoryview slices with the Intel
compiler.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Sun, 11 Jul 2010 12:12:00 +0000 |
| parents | cd00a94186c9 |
| children | b3b8d08f9d06 9108e7dcd7d8 |
line wrap: on
line diff
--- a/Objects/memoryobject.c Sun Jul 11 10:22:44 2010 +0000 +++ b/Objects/memoryobject.c Sun Jul 11 12:12:00 2010 +0000 @@ -624,7 +624,7 @@ static int memory_ass_sub(PyMemoryViewObject *self, PyObject *key, PyObject *value) { - Py_ssize_t start, len, bytelen, i; + Py_ssize_t start, len, bytelen; Py_buffer srcview; Py_buffer *view = &(self->view); char *srcbuf, *destbuf; @@ -694,16 +694,8 @@ if (destbuf + bytelen < srcbuf || srcbuf + bytelen < destbuf) /* No overlapping */ memcpy(destbuf, srcbuf, bytelen); - else if (destbuf < srcbuf) { - /* Copy in ascending order */ - for (i = 0; i < bytelen; i++) - destbuf[i] = srcbuf[i]; - } - else { - /* Copy in descencing order */ - for (i = bytelen - 1; i >= 0; i--) - destbuf[i] = srcbuf[i]; - } + else + memmove(destbuf, srcbuf, bytelen); PyBuffer_Release(&srcview); return 0;
