From 99ec6b349acea469147b4c586e1ced851189398f Mon Sep 17 00:00:00 2001 From: Neel Somani Date: Wed, 30 Sep 2026 01:31:27 -0700 Subject: [PATCH] gh-158486: Fix PowerSort mask calculation for very large lists --- .../2026-09-30-01-30-58.gh-issue-158486.cqmMwv.rst | 2 ++ Objects/listobject.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-09-30-01-30-58.gh-issue-158486.cqmMwv.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-09-30-01-30-58.gh-issue-158486.cqmMwv.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-09-30-01-30-58.gh-issue-158486.cqmMwv.rst new file mode 100644 index 000000000000000..6ef73833fcdb76a --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-09-30-01-30-58.gh-issue-158486.cqmMwv.rst @@ -0,0 +1,2 @@ +Fix the PowerSort mask calculation in :meth:`list.sort` for very large +lists. diff --git a/Objects/listobject.c b/Objects/listobject.c index 81eb3e1102159b5..962ed70aed6b8d3 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -2263,7 +2263,7 @@ merge_init(MergeState *ms, Py_ssize_t list_size, int has_keyfunc, while (list_size >> ms->mr_e >= MAX_MINRUN) { ++ms->mr_e; } - ms->mr_mask = (1 << ms->mr_e) - 1; + ms->mr_mask = ((Py_ssize_t)1 << ms->mr_e) - 1; ms->mr_current = 0; }