From fadcb1e75bca3e016895116a3bcce8e6b973b61a Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Sun, 19 Mar 2023 14:34:33 -0400 Subject: [PATCH] Handle null "DisplayName" in registry This is a backport of 0dabaa15fb2caf5ff19959827ab0d0adba676d14 from PR #331 Fixes #330 --- build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF | 2 +- .../cdt/build/gcc/core/internal/Msys2ToolChainProvider.java | 3 +++ core/org.eclipse.cdt.core/META-INF/MANIFEST.MF | 2 +- .../utils/org/eclipse/cdt/internal/core/MinGW.java | 6 ++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF index bbd122df157..e7b3ceb0757 100644 --- a/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF +++ b/build/org.eclipse.cdt.build.gcc.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.build.gcc.core;singleton:=true -Bundle-Version: 2.1.0.qualifier +Bundle-Version: 2.1.1.qualifier Bundle-Activator: org.eclipse.cdt.build.gcc.core.internal.Activator Bundle-Vendor: %providerName Require-Bundle: org.eclipse.core.runtime, diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/Msys2ToolChainProvider.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/Msys2ToolChainProvider.java index 7263b690743..38a95bbf118 100644 --- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/Msys2ToolChainProvider.java +++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/Msys2ToolChainProvider.java @@ -48,6 +48,9 @@ public class Msys2ToolChainProvider implements IToolChainProvider { for (int i = 0; (subkey = registry.getCurrentUserKeyName(uninstallKey, i)) != null; i++) { String compKey = uninstallKey + '\\' + subkey; String displayName = registry.getCurrentUserValue(compKey, "DisplayName"); //$NON-NLS-1$ + if (displayName == null) { + continue; + } if (on64bit) { if (MSYS2_64BIT_NAMES.contains(displayName)) { if (addToolChain64(manager, registry, compKey)) { diff --git a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF index 723c5cf2840..37ec45a4c02 100644 --- a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF +++ b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.core; singleton:=true -Bundle-Version: 8.1.0.qualifier +Bundle-Version: 8.1.1.qualifier Bundle-Activator: org.eclipse.cdt.core.CCorePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java index eadd6110bcb..79eb8cdd8e3 100644 --- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java +++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/MinGW.java @@ -95,6 +95,9 @@ public class MinGW { for (int i = 0; (subkey = registry.getCurrentUserKeyName(uninstallKey, i)) != null; i++) { String compKey = uninstallKey + '\\' + subkey; String displayName = registry.getCurrentUserValue(compKey, "DisplayName"); //$NON-NLS-1$ + if (displayName == null) { + continue; + } if (on64bit) { if (MSYS2_64BIT_NAMES.contains(displayName)) { String installLocation = registry.getCurrentUserValue(compKey, "InstallLocation"); //$NON-NLS-1$ @@ -230,6 +233,9 @@ public class MinGW { for (int i = 0; (subkey = registry.getCurrentUserKeyName(uninstallKey, i)) != null; i++) { String compKey = uninstallKey + '\\' + subkey; String displayName = registry.getCurrentUserValue(compKey, "DisplayName"); //$NON-NLS-1$ + if (displayName == null) { + continue; + } if (on64bit) { if (MSYS2_64BIT_NAMES.contains(displayName)) { String home = registry.getCurrentUserValue(compKey, "InstallLocation"); //$NON-NLS-1$