Prevent segfault for missing import case
Test: add invalid import and then m nothing(with and withouth allow
missing dep flag)
Bug: 189160954
Change-Id: Iae889799ee6dd6ad14be971a7a0d8cce1bb8152d
diff --git a/build/aidl_interface_backends.go b/build/aidl_interface_backends.go
index 49ce151..b085d67 100644
--- a/build/aidl_interface_backends.go
+++ b/build/aidl_interface_backends.go
@@ -427,20 +427,24 @@
i := lookupInterface(g.properties.AidlInterfaceName, ctx.Config())
version := g.properties.Version
lang := g.properties.Lang
- if g.properties.Lang == langJava {
- imports := make([]string, len(i.properties.Imports))
- for idx, anImport := range i.properties.Imports {
- imports[idx] = i.getImportWithVersion(version, anImport, ctx.Config()) + "-" + langJava
+ imports := make([]string, len(i.properties.Imports))
+ for idx, anImport := range i.properties.Imports {
+ importModule, _ := parseModuleWithVersion(anImport)
+ if lookupInterface(importModule, ctx.Config()) == nil {
+ if ctx.Config().AllowMissingDependencies() {
+ continue
+ }
+ panic(anImport + " doesn't exist, it should be checked in 'checkImports' mutator.")
}
+ imports[idx] = i.getImportWithVersion(version, anImport, ctx.Config()) + "-" + lang
+ }
+
+ if g.properties.Lang == langJava {
if p, ok := g.properties.ModuleProperties[0].(*javaProperties); ok {
p.Static_libs = imports
}
ctx.CreateModule(java.LibraryFactory, g.properties.ModuleProperties...)
} else {
- imports := make([]string, len(i.properties.Imports))
- for idx, anImport := range i.properties.Imports {
- imports[idx] = i.getImportWithVersion(version, anImport, ctx.Config()) + "-" + lang
- }
if p, ok := g.properties.ModuleProperties[0].(*ccProperties); ok {
p.Shared_libs = append(p.Shared_libs, imports...)
p.Export_shared_lib_headers = append(p.Export_shared_lib_headers, imports...)