From a95edf4e1754cdae018611fe66a25a9c9038eb58 Mon Sep 17 00:00:00 2001
From: Jay Huskins <54708-jayhuskins@users.noreply.drupalcode.org>
Date: Fri, 19 Jan 2024 00:37:24 +0000
Subject: [PATCH] Null coalesce missing definition categories and labels to
 empty strings to avoid warning for passing null to strnatcasecmp.

---
 .../Core/Plugin/CategorizingPluginManagerTrait.php     | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
index 1ce144680262..bc87de8d5ab0 100644
--- a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
+++ b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
@@ -89,10 +89,14 @@ public function getSortedDefinitions(array $definitions = NULL, $label_key = 'la
     // Sort the plugins first by category, then by label.
     $definitions = $definitions ?? $this->getDefinitions();
     uasort($definitions, function ($a, $b) use ($label_key) {
-      if ((string) $a['category'] != (string) $b['category']) {
-        return strnatcasecmp($a['category'], $b['category']);
+      $a_category = (string) $a['category'] ?? '';
+      $b_category = (string) $b['category'] ?? '';
+      if ($a_category != $b_category) {
+        return strnatcasecmp($a_category, $b_category);
       }
-      return strnatcasecmp($a[$label_key], $b[$label_key]);
+      $a_label = $a[$label_key] ?? '';
+      $b_label = $b[$label_key] ?? '';
+      return strnatcasecmp($a_label, $b_label);
     });
     return $definitions;
   }
-- 
GitLab