summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2015-09-13 10:34:29 +0200
committerStefan Behnel <stefan_ml@behnel.de>2015-09-13 10:34:29 +0200
commit3489c2211f037fd4a40be5d48459223be464f007 (patch)
treeeeb6a2e3a51c397b29fb66f28de214697fe8e1cd
parentc7227ac781764ac643d3d0e64eed0cf1079e5cea (diff)
downloadcython-3489c2211f037fd4a40be5d48459223be464f007.tar.gz
explicitly cast digits during PyLong conversion to avoid relying on potentially unsafe C coercion (fixes ticket #865)
-rw-r--r--Cython/Utility/__init__.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/Cython/Utility/__init__.py b/Cython/Utility/__init__.py
index 40fe94b33..73ccc1e2c 100644
--- a/Cython/Utility/__init__.py
+++ b/Cython/Utility/__init__.py
@@ -6,8 +6,8 @@ def pylong_join(count, digits_ptr='digits', join_type='unsigned long'):
(((d[2] << n) | d[1]) << n) | d[0]
"""
- return ('(' * (count * 2) + "(%s)" % join_type + ' | '.join(
- "%s[%d])%s)" % (digits_ptr, _i, " << PyLong_SHIFT" if _i else '')
+ return ('(' * (count * 2) + ' | '.join(
+ "(%s)%s[%d])%s)" % (join_type, digits_ptr, _i, " << PyLong_SHIFT" if _i else '')
for _i in range(count-1, -1, -1)))