commit: 7336b4f587b29d26018d925ed58f5aef503af218 Author: Rolf Eike Beer <eike <AT> sf-mail <DOT> de> AuthorDate: Fri Sep 3 13:15:19 2021 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Fri Sep 3 18:18:16 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7336b4f5
dev-python/cython: fix unaligned accesses in type conversions Signed-off-by: Rolf Eike Beer <eike <AT> sf-mail.de> Closes: https://github.com/gentoo/gentoo/pull/22204 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> ...hon-0.29.24.ebuild => cython-0.29.24-r1.ebuild} | 1 + .../files/cython-0.29.24-unaligned-format.patch | 33 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/dev-python/cython/cython-0.29.24.ebuild b/dev-python/cython/cython-0.29.24-r1.ebuild similarity index 97% rename from dev-python/cython/cython-0.29.24.ebuild rename to dev-python/cython/cython-0.29.24-r1.ebuild index 0c107a31d2b..dced6974732 100644 --- a/dev-python/cython/cython-0.29.24.ebuild +++ b/dev-python/cython/cython-0.29.24-r1.ebuild @@ -31,6 +31,7 @@ BDEPEND="${RDEPEND} PATCHES=( "${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch" "${FILESDIR}/${PN}-0.29.23-test_exceptions-py310.patch" + "${FILESDIR}/${PN}-0.29.24-unaligned-format.patch" ) SITEFILE=50cython-gentoo.el diff --git a/dev-python/cython/files/cython-0.29.24-unaligned-format.patch b/dev-python/cython/files/cython-0.29.24-unaligned-format.patch new file mode 100644 index 00000000000..955c32debb4 --- /dev/null +++ b/dev-python/cython/files/cython-0.29.24-unaligned-format.patch @@ -0,0 +1,33 @@ +From 2c08fd50d62e4255602ee3c0d41157df7608e773 Mon Sep 17 00:00:00 2001 +From: Stefan Behnel <[email protected]> +Date: Wed, 1 Sep 2021 00:09:02 +0200 +Subject: [PATCH] Avoid copying unaligned 16-bit values since some platforms + require them to be aligned. Use memcpy() instead to let the C compiler decide + how to do it. + +Closes https://github.com/cython/cython/issues/4343 +--- + Cython/Utility/TypeConversion.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Cython/Utility/TypeConversion.c b/Cython/Utility/TypeConversion.c +index 751d12b62a..3669bc9ec1 100644 +--- a/Cython/Utility/TypeConversion.c ++++ b/Cython/Utility/TypeConversion.c +@@ -829,14 +829,14 @@ static CYTHON_INLINE PyObject* {{TO_PY_FUNCTION}}({{TYPE}} value, Py_ssize_t wid + digit_pos = abs((int)(remaining % (8*8))); + remaining = ({{TYPE}}) (remaining / (8*8)); + dpos -= 2; +- *(uint16_t*)dpos = ((const uint16_t*)DIGIT_PAIRS_8)[digit_pos]; /* copy 2 digits at a time */ ++ memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); /* copy 2 digits at a time, unaligned */ + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = ({{TYPE}}) (remaining / (10*10)); + dpos -= 2; +- *(uint16_t*)dpos = ((const uint16_t*)DIGIT_PAIRS_10)[digit_pos]; /* copy 2 digits at a time */ ++ memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); /* copy 2 digits at a time, unaligned */ + last_one_off = (digit_pos < 10); + break; + case 'x':
