mirror of
https://github.com/php/php-src.git
synced 2026-03-24 16:22:37 +01:00
The reason why freeing was not done yet is because the pointer in these variables may be: - Static data set by the readline/libedit library initially, not heap data. - Data set by another thread. Although the libraries appear to be not thread-safe anyway. To solve this, introduce some TLS variables to hold a pointer for us when we override the settings, such that we can free them and are certain they are allocated by us. Closes GH-20794.
readline
Provides generic line editing, history, and tokenization functions. See https://www.php.net/manual/en/book.readline.php
Implementation Details
C variables starting with rl_* are declared by the readline library
(or are macros referring to variables from the libedit library).
See http://web.mit.edu/gnu/doc/html/rlman_2.html
This should only be used in the CLI SAPI. Historically, the code lived in sapi/cli, but many distributions build readline as a shared extension. Therefore, that code was split into ext/readline so that this can dynamically be loaded. With other SAPIs, readline is/should be disabled.
readline_cli.c implements most of the interactive shell(php -a).