From 3266978300ace81216e7cf7d072d43319efa2f65 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Sun, 11 Jul 2010 12:14:05 +0000 Subject: [PATCH] Merged revisions 82814 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r82814 | antoine.pitrou | 2010-07-11 14:12:00 +0200 (dim., 11 juil. 2010) | 4 lines Issue #7616: Fix copying of overlapping memoryview slices with the Intel compiler. ........ --- Misc/NEWS | 2 ++ Objects/memoryobject.c | 14 +++----------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 6235d875682b..81e1b5b5a8a1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.7.1? Core and Builtins ----------------- +- Issue #7616: Fix copying of overlapping memoryview slices with the Intel + compiler. Library ------- diff --git a/Objects/memoryobject.c b/Objects/memoryobject.c index 524521aadb3f..8c21ac1a4ccf 100644 --- a/Objects/memoryobject.c +++ b/Objects/memoryobject.c @@ -632,7 +632,7 @@ memory_subscript(PyMemoryViewObject *self, PyObject *key) 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; @@ -702,16 +702,8 @@ memory_ass_sub(PyMemoryViewObject *self, PyObject *key, PyObject *value) 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; -- 2.47.3