From d41df04b6afa647d1c5434d3b700f7519432fdc9 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Fri, 14 Apr 2023 16:18:31 -0700 Subject: [PATCH] Ensure vars are not lost during upgrade Using a reference on an array element while iterating over it caused some unexpected behavior. Instead of using a reference, this change uses a key to allow us to edit the array element. For reference on the problem, see https://stackoverflow.com/questions/70691375/foreach-with-reference-causing-arrays-last-element-to-repeat. --- app/tasks/install.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/tasks/install.php b/app/tasks/install.php index 3519b58d0b..0f15af2eda 100644 --- a/app/tasks/install.php +++ b/app/tasks/install.php @@ -95,9 +95,9 @@ $cli if (is_null($value)) { continue; } - foreach ($vars as &$var) { + foreach ($vars as $i => $var) { if ($var['name'] === $key) { - $var['default'] = $value; + $vars[$i]['default'] = $value; } } } @@ -114,9 +114,9 @@ $cli if (is_null($value)) { continue; } - foreach ($vars as &$var) { + foreach ($vars as $i => $var) { if ($var['name'] === $key) { - $var['default'] = $value; + $vars[$i]['default'] = $value; } } } @@ -146,7 +146,7 @@ $cli $input = []; - foreach ($vars as $key => $var) { + foreach ($vars as $var) { if (!empty($var['filter']) && ($interactive !== 'Y' || !Console::isInteractive())) { if ($data && $var['default'] !== null) { $input[$var['name']] = $var['default'];