diff --git a/lib/pear/HTML/QuickForm.php b/lib/pear/HTML/QuickForm.php
index 6cec481f024..7d55dcdbd50 100644
--- a/lib/pear/HTML/QuickForm.php
+++ b/lib/pear/HTML/QuickForm.php
@@ -1570,15 +1570,16 @@ class HTML_QuickForm extends HTML_Common {
$elementList = array_flip($elementList);
}
+ $frozen = [];
foreach (array_keys($this->_elements) as $key) {
$name = $this->_elements[$key]->getName();
if ($this->_freezeAll || isset($elementList[$name])) {
$this->_elements[$key]->freeze();
- unset($elementList[$name]);
+ $frozen[$name] = true;
}
}
- if (!empty($elementList)) {
+ if (count($elementList) != count($frozen)) {
return self::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Nonexistant element(s): '" . implode("', '", array_keys($elementList)) . "' in HTML_QuickForm::freeze()", 'HTML_QuickForm_Error', true);
}
return true;
diff --git a/lib/pear/readme_moodle.txt b/lib/pear/readme_moodle.txt
index b585c1357e5..caa8a112ba6 100644
--- a/lib/pear/readme_moodle.txt
+++ b/lib/pear/readme_moodle.txt
@@ -38,6 +38,7 @@ MDL-77164 - PHPdocs corrections
MDL-78145 - PHP 8.2 compliance. Added a missing class property that still need to be declared
to avoid dynamic properties deprecated error warning.
And also remove the $_elementIdx because it is not needed in Moodle code.
+MDL-80818 - Freezing all elements with the same name (e.g. radio buttons)
Pear
====