summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2021-01-06 18:56:02 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2021-01-07 13:46:09 +0100
commit9450893dc682fa09ea1265acd2d885710ca82699 (patch)
tree1dae6d0ab7f2c05b5acf45c53fbe85892d5dc4f2
parentd1b1c043988277b7c0d46ec7c953418cbfbb2608 (diff)
downloadphp-git-9450893dc682fa09ea1265acd2d885710ca82699.tar.gz
Avoid modifying the return value of readline_completion_function()
The internal function `_readline_command_generator()` modifies the internal array pointer of `readline_completion_function()`'s return value. We therefore separate the array, what also avoids failing assertions regarding the array refcount. Closes GH-6582.
-rw-r--r--ext/readline/readline.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 174556d4d3..d0a4d7a062 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -555,6 +555,7 @@ static char **_readline_completion_cb(const char *text, int start, int end)
if (call_user_function(NULL, NULL, &_readline_completion, &_readline_array, 3, params) == SUCCESS) {
if (Z_TYPE(_readline_array) == IS_ARRAY) {
+ SEPARATE_ARRAY(&_readline_array);
if (zend_hash_num_elements(Z_ARRVAL(_readline_array))) {
matches = rl_completion_matches(text,_readline_command_generator);
} else {