diff --git a/Misc/NEWS b/Misc/NEWS index b0db3a28aa9d30..7d89170741a9fa 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 3.6.0 beta 1 Core and Builtins ----------------- +- Issue #25221: Fix corrupted result from PyLong_FromLong(0) when Python + is compiled with NSMALLPOSINTS = 0. + - Issue #27080: Implement formatting support for PEP 515. Initial patch by Chris Angelico. diff --git a/Objects/longobject.c b/Objects/longobject.c index bbf7e7183eb66d..a453241b3fa8e4 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -234,7 +234,7 @@ PyLong_FromLong(long ival) unsigned long abs_ival; unsigned long t; /* unsigned so >> doesn't propagate sign bit */ int ndigits = 0; - int sign = 1; + int sign; CHECK_SMALL_INT(ival); @@ -246,6 +246,7 @@ PyLong_FromLong(long ival) } else { abs_ival = (unsigned long)ival; + sign = ival == 0 ? 0 : 1; } /* Fast path for single-digit ints */