diff --git a/core/lib/Drupal/Core/Render/Element/Radio.php b/core/lib/Drupal/Core/Render/Element/Radio.php index 2e8b28c..8036952 100644 --- a/core/lib/Drupal/Core/Render/Element/Radio.php +++ b/core/lib/Drupal/Core/Render/Element/Radio.php @@ -61,8 +61,19 @@ public static function preRenderRadio($element) { $element['#attributes']['type'] = 'radio'; Element::setAttributes($element, array('id', 'name', '#return_value' => 'value')); - if (isset($element['#return_value']) && $element['#value'] !== FALSE && $element['#value'] == $element['#return_value']) { - $element['#attributes']['checked'] = 'checked'; + if (isset($element['#return_value']) && $element['#value'] !== FALSE) { + // To avoid auto-casting during '==' we convert int 0 to '0' for both operands. + // It will prevent wrong true-checking for both cases: 0 == 'string' and 'string' == 0. + if ($element['#value'] === 0) { + $element['#value'] = '0'; + } + if ($element['#return_value'] === 0) { + $element['#return_value'] = '0'; + } + + if ($element['#value'] == $element['#return_value']) { + $element['#attributes']['checked'] = 'checked'; + } } static::setAttributes($element, array('form-radio'));