STINNER Victor <vstin...@python.org> added the comment:

Yes, please remove it from the limited C API.

PyOS_ReadlineFunctionPointer has a bad API. I fixed recently PyOS_StdioReadline 
because it used the Python C API without holding the GIL. To acquire the GIL, 
you need to access a *private* _PyOS_ReadlineTState variable which is kind of 
unfortunate :-(

commit c353764fd564e401cf47a5d9efab18c72c60014e
Author: Victor Stinner <vstin...@python.org>
Date:   Mon Jun 1 20:59:35 2020 +0200

    bpo-40826: Fix GIL usage in PyOS_Readline() (GH-20579)
    
    Fix GIL usage in PyOS_Readline(): lock the GIL to set an exception.
    
    Pass tstate to my_fgets() and _PyOS_WindowsConsoleReadline(). Cleanup
    these functions.

See also:

commit fa7ab6aa0f9a4f695e5525db5a113cd21fa93787
Author: Victor Stinner <vstin...@python.org>
Date:   Wed Jun 3 14:39:59 2020 +0200

    bpo-40826: Add _PyOS_InterruptOccurred(tstate) function (GH-20599)
    
    my_fgets() now calls _PyOS_InterruptOccurred(tstate) to check for
    pending signals, rather calling PyOS_InterruptOccurred().
    
    my_fgets() is called with the GIL released, whereas
    PyOS_InterruptOccurred() must be called with the GIL held.
    
    test_repl: use text=True and avoid SuppressCrashReport in
    test_multiline_string_parsing().
    
    Fix my_fgets() on Windows: fgets(fp) does crash if fileno(fp) is closed.

----------
nosy: +vstinner

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43868>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to