]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-44172: Keep reference to original window in curses subwindow objects (GH-26226)
authorMichael Forney <mforney@mforney.org>
Sun, 4 May 2025 10:29:44 +0000 (03:29 -0700)
committerGitHub <noreply@github.com>
Sun, 4 May 2025 10:29:44 +0000 (13:29 +0300)
commit0af61fe2f41048d66b0a973bbff056690446d3df
treee8090981a10df6efc1d77ec0909b9f81508e1c8b
parentac7d5ba96eb780b13877456b118ff1183bc6c4b3
bpo-44172: Keep reference to original window in curses subwindow objects (GH-26226)

The X/Open curses specification[0] and ncurses documentation[1]
both state that subwindows must be deleted before the main window.

Deleting the windows in the wrong order causes a double-free with
NetBSD's curses implementation.

To fix this, keep track of the original window object in the subwindow
object, and keep a reference to the original for the lifetime of
the subwindow.

[0] https://pubs.opengroup.org/onlinepubs/7908799/xcurses/delwin.html
[1] https://invisible-island.net/ncurses/man/curs_window.3x.html

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Include/py_curses.h
Lib/test/test_curses.py
Misc/NEWS.d/next/Library/2021-05-18-19-12-58.bpo-44172.rJ_-CI.rst [new file with mode: 0644]
Modules/_cursesmodule.c