1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

[703] fix NPE when no build binaries on system PATH (#704)

[703] fix NPE when no build binaries on system PATH

- fixes NPE when new cmake project has been created while there are no
C/C++ build binaries on the PATH environment variable. The NPE has been
thrown when the children of the project should be fetched (e.g. in
project explorer view)
- fix NPE cause in ErrorBuildConfiguration
- fix unit test

fixes #703
This commit is contained in:
G. Hentschke 2024-02-11 07:45:57 +01:00 committed by GitHub
parent bfa8700634
commit d04849b0c4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 7 additions and 5 deletions

View file

@ -13,7 +13,6 @@ package org.eclipse.cdt.core.build;
import static org.junit.Assert.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import java.util.List;
@ -62,10 +61,12 @@ public class TestICBuildConfiguration {
/*
* It's difficult to create a functional BuildConfiguration without a toolchain, so just use
* this Error Build Configuration. It is adequate for simply testing the API.
*
* Edit: getBinaryParserIds() must not return null to prevent possible NPE
*/
ErrorBuildConfiguration errorBuildConfiguration = new ErrorBuildConfiguration(buildConfig, "errorBuildConfig");
List<String> binaryParserIds = errorBuildConfiguration.getBinaryParserIds();
assertNull(binaryParserIds, "Must be null");
assertNotNull(binaryParserIds, "Must not be null");
}
private IProject getProject() throws Exception {

View file

@ -617,7 +617,7 @@ public class CModelManager implements IResourceChangeListener, IContentTypeChang
Set<String> parserIds = new HashSet<>();
for (IBuildConfiguration config : project.getBuildConfigs()) {
ICBuildConfiguration cconfig = config.getAdapter(ICBuildConfiguration.class);
if (cconfig != null) {
if (cconfig != null && cconfig.getBinaryParserIds() != null) {
parserIds.addAll(cconfig.getBinaryParserIds());
}
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.core.build;
import java.io.IOException;
import java.net.URI;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -145,8 +146,8 @@ public class ErrorBuildConfiguration extends PlatformObject implements ICBuildCo
@Override
public List<String> getBinaryParserIds() throws CoreException {
// TODO Auto-generated method stub
return null;
// Return empty list to prevent possible NPE
return Collections.emptyList();
}
}