Commit aabbdc79 authored by Antoine Pitrou's avatar Antoine Pitrou

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.
........
parent 6e675719
...@@ -12,6 +12,9 @@ What's New in Python 3.1.3? ...@@ -12,6 +12,9 @@ What's New in Python 3.1.3?
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #7616: Fix copying of overlapping memoryview slices with the Intel
compiler.
- Issue #8271: during the decoding of an invalid UTF-8 byte sequence, only the - Issue #8271: during the decoding of an invalid UTF-8 byte sequence, only the
start byte and the continuation byte(s) are now considered invalid, instead start byte and the continuation byte(s) are now considered invalid, instead
of the number of bytes specified by the start byte. of the number of bytes specified by the start byte.
......
...@@ -624,7 +624,7 @@ memory_subscript(PyMemoryViewObject *self, PyObject *key) ...@@ -624,7 +624,7 @@ memory_subscript(PyMemoryViewObject *self, PyObject *key)
static int static int
memory_ass_sub(PyMemoryViewObject *self, PyObject *key, PyObject *value) 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 srcview;
Py_buffer *view = &(self->view); Py_buffer *view = &(self->view);
char *srcbuf, *destbuf; char *srcbuf, *destbuf;
...@@ -694,16 +694,8 @@ memory_ass_sub(PyMemoryViewObject *self, PyObject *key, PyObject *value) ...@@ -694,16 +694,8 @@ memory_ass_sub(PyMemoryViewObject *self, PyObject *key, PyObject *value)
if (destbuf + bytelen < srcbuf || srcbuf + bytelen < destbuf) if (destbuf + bytelen < srcbuf || srcbuf + bytelen < destbuf)
/* No overlapping */ /* No overlapping */
memcpy(destbuf, srcbuf, bytelen); memcpy(destbuf, srcbuf, bytelen);
else if (destbuf < srcbuf) { else
/* Copy in ascending order */ memmove(destbuf, srcbuf, bytelen);
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];
}
PyBuffer_Release(&srcview); PyBuffer_Release(&srcview);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment