Merge "Use deep copy when copying bpPropertySets" am: 515f043a6b
am: b472304a75
am: 981bc5267f
Change-Id: I9f18fdb257f1eda1616eb6d662b44719337f5bfa
This commit is contained in:
25
sdk/bp.go
25
sdk/bp.go
@@ -51,13 +51,23 @@ func (s *bpPropertySet) getValue(name string) interface{} {
|
|||||||
return s.properties[name]
|
return s.properties[name]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *bpPropertySet) copy() bpPropertySet {
|
func (s *bpPropertySet) deepCopy() *bpPropertySet {
|
||||||
propertiesCopy := make(map[string]interface{})
|
propertiesCopy := make(map[string]interface{})
|
||||||
for p, v := range s.properties {
|
for p, v := range s.properties {
|
||||||
propertiesCopy[p] = v
|
var valueCopy interface{}
|
||||||
|
if ps, ok := v.(*bpPropertySet); ok {
|
||||||
|
valueCopy = ps.deepCopy()
|
||||||
|
} else if values, ok := v.([]string); ok {
|
||||||
|
valuesCopy := make([]string, len(values))
|
||||||
|
copy(valuesCopy, values)
|
||||||
|
valueCopy = valuesCopy
|
||||||
|
} else {
|
||||||
|
valueCopy = v
|
||||||
|
}
|
||||||
|
propertiesCopy[p] = valueCopy
|
||||||
}
|
}
|
||||||
|
|
||||||
return bpPropertySet{
|
return &bpPropertySet{
|
||||||
properties: propertiesCopy,
|
properties: propertiesCopy,
|
||||||
order: append([]string(nil), s.order...),
|
order: append([]string(nil), s.order...),
|
||||||
}
|
}
|
||||||
@@ -95,15 +105,15 @@ func (s *bpPropertySet) insertAfter(position string, name string, value interfac
|
|||||||
}
|
}
|
||||||
|
|
||||||
type bpModule struct {
|
type bpModule struct {
|
||||||
bpPropertySet
|
*bpPropertySet
|
||||||
moduleType string
|
moduleType string
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ android.BpModule = (*bpModule)(nil)
|
var _ android.BpModule = (*bpModule)(nil)
|
||||||
|
|
||||||
func (m *bpModule) copy() *bpModule {
|
func (m *bpModule) deepCopy() *bpModule {
|
||||||
return &bpModule{
|
return &bpModule{
|
||||||
bpPropertySet: m.bpPropertySet.copy(),
|
bpPropertySet: m.bpPropertySet.deepCopy(),
|
||||||
moduleType: m.moduleType,
|
moduleType: m.moduleType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,7 +145,8 @@ func (f *bpFile) AddModule(module android.BpModule) {
|
|||||||
func (f *bpFile) newModule(moduleType string) *bpModule {
|
func (f *bpFile) newModule(moduleType string) *bpModule {
|
||||||
module := &bpModule{
|
module := &bpModule{
|
||||||
moduleType: moduleType,
|
moduleType: moduleType,
|
||||||
|
bpPropertySet: &bpPropertySet{},
|
||||||
}
|
}
|
||||||
(&module.bpPropertySet).init()
|
module.bpPropertySet.init()
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
@@ -196,7 +196,7 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext) android.OutputPath {
|
|||||||
|
|
||||||
for _, unversioned := range builder.prebuiltOrder {
|
for _, unversioned := range builder.prebuiltOrder {
|
||||||
// Copy the unversioned module so it can be modified to make it versioned.
|
// Copy the unversioned module so it can be modified to make it versioned.
|
||||||
versioned := unversioned.copy()
|
versioned := unversioned.deepCopy()
|
||||||
name := versioned.properties["name"].(string)
|
name := versioned.properties["name"].(string)
|
||||||
versioned.setProperty("name", builder.versionedSdkMemberName(name))
|
versioned.setProperty("name", builder.versionedSdkMemberName(name))
|
||||||
versioned.insertAfter("name", "sdk_member_name", name)
|
versioned.insertAfter("name", "sdk_member_name", name)
|
||||||
@@ -286,7 +286,7 @@ func generateBpContents(contents *generatedContents, bpFile *bpFile) {
|
|||||||
for _, bpModule := range bpFile.order {
|
for _, bpModule := range bpFile.order {
|
||||||
contents.Printfln("")
|
contents.Printfln("")
|
||||||
contents.Printfln("%s {", bpModule.moduleType)
|
contents.Printfln("%s {", bpModule.moduleType)
|
||||||
outputPropertySet(contents, &bpModule.bpPropertySet)
|
outputPropertySet(contents, bpModule.bpPropertySet)
|
||||||
contents.Printfln("}")
|
contents.Printfln("}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user