mirror of
https://github.com/python/cpython.git
synced 2025-08-09 19:38:42 +00:00
Merged revisions 76629 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r76629 | mark.dickinson | 2009-12-02 17:33:41 +0000 (Wed, 02 Dec 2009) | 3 lines Issue #7406: Fix some occurrences of potential signed overflow in int arithmetic. ........
This commit is contained in:
parent
0d124c29e2
commit
6df863c93a
2 changed files with 12 additions and 5 deletions
|
@ -1191,7 +1191,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
register long a, b, i;
|
||||
a = PyInt_AS_LONG(v);
|
||||
b = PyInt_AS_LONG(w);
|
||||
i = a + b;
|
||||
/* cast to avoid undefined behaviour
|
||||
on overflow */
|
||||
i = (long)((unsigned long)a + b);
|
||||
if ((i^a) < 0 && (i^b) < 0)
|
||||
goto slow_add;
|
||||
x = PyInt_FromLong(i);
|
||||
|
@ -1221,7 +1223,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
register long a, b, i;
|
||||
a = PyInt_AS_LONG(v);
|
||||
b = PyInt_AS_LONG(w);
|
||||
i = a - b;
|
||||
/* cast to avoid undefined behaviour
|
||||
on overflow */
|
||||
i = (long)((unsigned long)a - b);
|
||||
if ((i^a) < 0 && (i^~b) < 0)
|
||||
goto slow_sub;
|
||||
x = PyInt_FromLong(i);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue