summaryrefslogtreecommitdiff
path: root/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch')
-rw-r--r--dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch b/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch
new file mode 100644
index 000000000000..706b41b74688
--- /dev/null
+++ b/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch
@@ -0,0 +1,35 @@
+From: Arthur Zamarin <arthurzam@gmail.com>
+Date: Fri, 30 Jul 2021 11:13:41 +0300
+[PATCH] PyPy3: fix test_empty_array
+
+As an optimization, PyPy sets empty array.array to use a NULL buffer
+pointer, while CPython uses empty buffer (but not NULL).
+Add a very specially crafted fix for PyPy3
+
+Signed-off-by: Arthur Zamarin <arthurzam@gmail.com>
+---
+ regex_3/_regex.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/regex_3/_regex.c
++++ b/regex_3/_regex.c
+@@ -18062,9 +18062,19 @@ Py_LOCAL_INLINE(BOOL) get_string(PyObject* string, RE_StringInfo* str_info) {
+ }
+
+ if (!str_info->view.buf) {
++#if defined(PYPY_VERSION)
++ /* In PyPy3, when the array.array is empty, it's buffer is NULL */
++ str_info->characters = NULL;
++ str_info->length = 0;
++ str_info->charsize = 1;
++ str_info->is_unicode = FALSE;
++ str_info->should_release = FALSE;
++ return TRUE;
++#else
+ PyBuffer_Release(&str_info->view);
+ PyErr_SetString(PyExc_ValueError, "buffer is NULL");
+ return FALSE;
++#endif
+ }
+
+ str_info->should_release = TRUE;