Skip to content

Commit

Permalink
Config::processLongArgument(): fix storing of unknown arguments
Browse files Browse the repository at this point in the history
These arguments should be stored in the `unknown` property. There is no `values` property.

Note: the read/write logic is to prevent a `Indirect modification of overloaded property PHP_CodeSniffer\Config::$unknown has no effect` PHP notice.
  • Loading branch information
jrfnl committed Dec 5, 2023
1 parent 103a84d commit b23ed18
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ The file documents changes to the PHP_CodeSniffer project.
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- Fixed bug #3906 : Tokenizer/CSS: fixed a bug related to the unsupported slash comment syntax
- Thanks to Dan Wallis (@fredden) for the patch
- Fixed bug #3913 : Config stored unknown "long" arguments in a (dynamic) `$values` property
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch

Props also to Dan Wallis (@fredden) and Danny van der Sluijs (@DannyvdSluijs) for reviewing quite a few of the PRs for this release.

Expand Down
12 changes: 8 additions & 4 deletions src/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -1232,13 +1232,17 @@ public function processLongArgument($arg, $pos)
if ($this->dieOnUnknownArg === false) {
$eqPos = strpos($arg, '=');
try {
$unknown = $this->unknown;

if ($eqPos === false) {
$this->values[$arg] = $arg;
$unknown[$arg] = $arg;
} else {
$value = substr($arg, ($eqPos + 1));
$arg = substr($arg, 0, $eqPos);
$this->values[$arg] = $value;
$value = substr($arg, ($eqPos + 1));
$arg = substr($arg, 0, $eqPos);
$unknown[$arg] = $value;
}

$this->unknown = $unknown;
} catch (RuntimeException $e) {
// Value is not valid, so just ignore it.
}
Expand Down

0 comments on commit b23ed18

Please sign in to comment.