Backport f639e6d435cb240c, see [RHELPLAN-41401]
This commit is contained in:
parent
71280f32f3
commit
a91d0996ae
2 changed files with 67 additions and 1 deletions
|
|
@ -6,13 +6,16 @@
|
|||
Name: Cython
|
||||
Version: 0.29.19
|
||||
%global upver %{version_no_tilde %{nil}}
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: Language for writing Python extension modules
|
||||
|
||||
License: ASL 2.0
|
||||
URL: http://www.cython.org
|
||||
Source: https://github.com/cython/cython/archive/%{upver}/%{srcname}-%{version}.tar.gz
|
||||
|
||||
# Backported from upstream, fixes an undefined behavior and allows clang interoperability
|
||||
Patch2705: f639e6d435cb240c5c21afe91a71915c4af23b7c.patch
|
||||
|
||||
# Partially work around issues with class and static methods
|
||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=1788506
|
||||
# Mostly backported from upstream: https://github.com/cython/cython/pull/3106
|
||||
|
|
@ -118,6 +121,9 @@ cp -p cython-mode-init.el cython-mode-init.elc %{buildroot}%{_emacs_sitestartdir
|
|||
%{_emacs_sitestartdir}/cython*.el*
|
||||
|
||||
%changelog
|
||||
* Wed May 27 2020 sguelton@redhat.com - 0.29.19-2
|
||||
- Backport f639e6d435cb240c, see [RHELPLAN-41401]
|
||||
|
||||
* Wed May 27 2020 sguelton@redhat.com - 0.29.19-1
|
||||
- Update to 0.29.19
|
||||
|
||||
|
|
|
|||
60
f639e6d435cb240c5c21afe91a71915c4af23b7c.patch
Normal file
60
f639e6d435cb240c5c21afe91a71915c4af23b7c.patch
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
From f639e6d435cb240c5c21afe91a71915c4af23b7c Mon Sep 17 00:00:00 2001
|
||||
From: serge-sans-paille <serge.guelton@telecom-bretagne.eu>
|
||||
Date: Tue, 26 May 2020 18:27:22 +0200
|
||||
Subject: [PATCH] Fix overflow handling for abs() calls on signed integer types
|
||||
(GH-3634)
|
||||
|
||||
Fixes #1911
|
||||
---
|
||||
Cython/Compiler/ExprNodes.py | 19 ++++++++++++-------
|
||||
tests/run/builtin_abs.pyx | 1 +
|
||||
2 files changed, 13 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py
|
||||
index 48c7f721c7..25e84fd915 100644
|
||||
--- a/Cython/Compiler/ExprNodes.py
|
||||
+++ b/Cython/Compiler/ExprNodes.py
|
||||
@@ -5934,6 +5934,17 @@ def generate_evaluation_code(self, code):
|
||||
if function.is_name or function.is_attribute:
|
||||
code.globalstate.use_entry_utility_code(function.entry)
|
||||
|
||||
+ abs_function_cnames = ('abs', 'labs', '__Pyx_abs_longlong')
|
||||
+ is_signed_int = self.type.is_int and self.type.signed
|
||||
+ if self.overflowcheck and is_signed_int and function.result() in abs_function_cnames:
|
||||
+ code.globalstate.use_utility_code(UtilityCode.load_cached("Common", "Overflow.c"))
|
||||
+ code.putln('if (unlikely(%s == __PYX_MIN(%s))) {\
|
||||
+ PyErr_SetString(PyExc_OverflowError,\
|
||||
+ "Trying to take the absolute value of the most negative integer is not defined."); %s; }' % (
|
||||
+ self.args[0].result(),
|
||||
+ self.args[0].type.empty_declaration_code(),
|
||||
+ code.error_goto(self.pos)))
|
||||
+
|
||||
if not function.type.is_pyobject or len(self.arg_tuple.args) > 1 or (
|
||||
self.arg_tuple.args and self.arg_tuple.is_literal):
|
||||
super(SimpleCallNode, self).generate_evaluation_code(code)
|
||||
@@ -6036,13 +6047,7 @@ def generate_result_code(self, code):
|
||||
self.result() if self.type.is_pyobject else None,
|
||||
func_type.exception_value, self.nogil)
|
||||
else:
|
||||
- if (self.overflowcheck
|
||||
- and self.type.is_int
|
||||
- and self.type.signed
|
||||
- and self.function.result() in ('abs', 'labs', '__Pyx_abs_longlong')):
|
||||
- goto_error = 'if (unlikely(%s < 0)) { PyErr_SetString(PyExc_OverflowError, "value too large"); %s; }' % (
|
||||
- self.result(), code.error_goto(self.pos))
|
||||
- elif exc_checks:
|
||||
+ if exc_checks:
|
||||
goto_error = code.error_goto_if(" && ".join(exc_checks), self.pos)
|
||||
else:
|
||||
goto_error = ""
|
||||
diff --git a/tests/run/builtin_abs.pyx b/tests/run/builtin_abs.pyx
|
||||
index 21bea7df20..5b35eb886a 100644
|
||||
--- a/tests/run/builtin_abs.pyx
|
||||
+++ b/tests/run/builtin_abs.pyx
|
||||
@@ -1,5 +1,6 @@
|
||||
# mode: run
|
||||
# ticket: 698
|
||||
+# distutils: extra_compile_args=-fwrapv
|
||||
|
||||
cdef extern from *:
|
||||
int INT_MAX
|
||||
Loading…
Add table
Add a link
Reference in a new issue