diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java index dada8d82a19..f37f241e131 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/AdditionalInput.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2019 Intel Corporation and others. + * Copyright (c) 2005, 2020 Intel Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.regex.Pattern; import org.eclipse.cdt.core.cdtvariables.CdtVariableException; import org.eclipse.cdt.core.settings.model.ICStorageElement; @@ -493,6 +494,8 @@ public class AdditionalInput implements IAdditionalInput { return dirs; } + final static Pattern extPattern = Pattern.compile("(?!\\.)(\\d+(\\.\\d+(\\.\\d+)?)?)(?![\\d\\.])$"); //$NON-NLS-1$ + private URI findLibrary(IToolChain toolChain, final String libName, List dirs) throws CoreException { final String libSO = getDynamicLibPrefix(toolChain) + libName + '.' + getDynamicLibExtension(toolChain); final String libA = getStaticLibPrefix(toolChain) + libName + '.' + getStaticLibExtension(toolChain); @@ -505,15 +508,14 @@ public class AdditionalInput implements IAdditionalInput { return false; if (libSO.length() == name.length()) return true; // we don't necessarily have a version extension - if (name.charAt(libSO.length()) != '.') + if (name.length() <= libSO.length() + 1 || name.charAt(libSO.length()) != '.') return false; - String ext = libName.substring(libSO.length() + 1); - try { - Integer.parseInt(ext); - return true; - } catch (NumberFormatException e) { - return false; - } + String ext = name.substring(libSO.length() + 1); + + // Check the version extension to be in form of "..", + // for example: "1.10.0", "1.10", "1" are the valid version extensions + // + return extPattern.matcher(ext).matches(); } boolean equals(String a, String b) {