summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyson Andre <tysonandre775@hotmail.com>2020-09-05 16:52:14 -0400
committerTyson Andre <tysonandre775@hotmail.com>2020-09-05 17:33:20 -0400
commit9439ca53227b23e9a0eb0173c80f712ed480fdd8 (patch)
tree39506705c4d682fa4d01035852368d69cb69955c
parentaa613f8b1a4997b8a955422beee5c1e738b3e1e8 (diff)
downloadphp-git-9439ca53227b23e9a0eb0173c80f712ed480fdd8.tar.gz
Improve handling of `#[` in `php -a`
PHP treats `#ini_setting=value` as a call to `ini_set('ini_setting', 'value')`, and silently skips undeclared settings. This is a problem due to `#[` becoming supported attribute syntax: - `#[Attr] const X = 123;` (this is not a valid place to put an attribute) This does not create a constant. - `#[Attr] function test($x=false){}` also contains `=`. This does not create a function. Instead, only treat lines starting with `#` as a special case when the next character isn't `[` Closes GH-6085
-rw-r--r--ext/readline/readline_cli.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/readline/readline_cli.c b/ext/readline/readline_cli.c
index a463a89db4..d7e6f20c9f 100644
--- a/ext/readline/readline_cli.c
+++ b/ext/readline/readline_cli.c
@@ -518,7 +518,7 @@ TODO:
}
if (text[0] == '$') {
retval = cli_completion_generator_var(text, textlen, &cli_completion_state);
- } else if (text[0] == '#') {
+ } else if (text[0] == '#' && text[1] != '[') {
retval = cli_completion_generator_ini(text, textlen, &cli_completion_state);
} else {
char *lc_text, *class_name_end;
@@ -630,7 +630,7 @@ static int readline_shell_run(void) /* {{{ */
len = strlen(line);
- if (line[0] == '#') {
+ if (line[0] == '#' && line[1] != '[') {
char *param = strstr(&line[1], "=");
if (param) {
zend_string *cmd;