From 55c2df3b03e981e535d168031f61bb329366854d Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Wed, 24 Feb 2021 15:23:50 -0500 Subject: [PATCH] Bug 571309: Use java Collections instead of System.arraycopy System.arraycopy is more error prone and subsequent commits will be modifying the array. This commit is to keep unrelated code separate. Change-Id: I2490318176da3e631a63974ffe5fa62da44a96ea --- .../META-INF/MANIFEST.MF | 2 +- .../core/HeadlessBuilderExternalSettingsProvider.java | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF index e9161200b95..953da0f2dd9 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF +++ b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.core; singleton:=true -Bundle-Version: 9.2.0.qualifier +Bundle-Version: 9.2.100.qualifier Bundle-Activator: org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java index 46648561369..f0501865df9 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/HeadlessBuilderExternalSettingsProvider.java @@ -58,16 +58,15 @@ public class HeadlessBuilderExternalSettingsProvider extends CExternalSettingPro static void hookExternalSettingsProvider() { if (additionalSettings.isEmpty()) return; - // Remove the external settings providers from all the hooked projects + // hook the external settings providers to all projects for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { ICProjectDescription desc = CCorePlugin.getDefault().getProjectDescription(project); if (desc == null) continue; for (ICConfigurationDescription cfg : desc.getConfigurations()) { - String[] extSettingIds = cfg.getExternalSettingsProviderIds(); - String[] newSettingIds = new String[extSettingIds.length + 1]; - System.arraycopy(extSettingIds, 0, newSettingIds, 0, extSettingIds.length); - newSettingIds[extSettingIds.length] = ID; + List settingIds = new ArrayList<>(Arrays.asList(cfg.getExternalSettingsProviderIds())); + settingIds.add(ID); + String[] newSettingIds = settingIds.toArray(String[]::new); cfg.setExternalSettingsProviderIds(newSettingIds); } try {