File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -511,7 +511,7 @@ PyLong_FromDouble(double dval)
511511long
512512PyLong_AsLongAndOverflow (PyObject * vv , int * overflow )
513513{
514- /* This version by Tim Peters */
514+ /* This version originally by Tim Peters */
515515 PyLongObject * v ;
516516 unsigned long x , prev ;
517517 long res ;
@@ -565,6 +565,36 @@ PyLong_AsLongAndOverflow(PyObject *vv, int *overflow)
565565 goto exit ;
566566 }
567567 }
568+
569+ /*
570+ digit *digits = v->long_value.ob_digit;
571+
572+ assert(i >= 2);
573+ #if ((ULONG_MAX >> PyLong_SHIFT)) >= ((1UL << PyLong_SHIFT) - 1)
574+ /* use 2 digits *
575+ --i;
576+ x = digits[i];
577+ x <<= PyLong_SHIFT;
578+ --i;
579+ x |= digits[i];
580+ #else
581+ /* use 1 digit *
582+ //--i;
583+ assert(ULONG_MAX >= ((1UL << PyLong_SHIFT) - 1));
584+ //x = digits[i];
585+ x=0;
586+ #endif
587+ */
588+
589+ /*
590+ while (--i >= 0) {
591+ if (x > SIZE_MAX >> PyLong_SHIFT) {
592+ *overflow = sign;
593+ goto exit;
594+ }
595+ x = (x << PyLong_SHIFT) | v->long_value.ob_digit[i];
596+ }
597+ */
568598 /* Haven't lost any bits, but casting to long requires extra
569599 * care (see comment above).
570600 */
You can’t perform that action at this time.
0 commit comments