Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 515f043a authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Use deep copy when copying bpPropertySets"

parents 1cc755ac cc72e981
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -51,13 +51,23 @@ func (s *bpPropertySet) getValue(name string) interface{} {
	return s.properties[name]
}

func (s *bpPropertySet) copy() bpPropertySet {
func (s *bpPropertySet) deepCopy() *bpPropertySet {
	propertiesCopy := make(map[string]interface{})
	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,
		order:      append([]string(nil), s.order...),
	}
@@ -95,15 +105,15 @@ func (s *bpPropertySet) insertAfter(position string, name string, value interfac
}

type bpModule struct {
	bpPropertySet
	*bpPropertySet
	moduleType string
}

var _ android.BpModule = (*bpModule)(nil)

func (m *bpModule) copy() *bpModule {
func (m *bpModule) deepCopy() *bpModule {
	return &bpModule{
		bpPropertySet: m.bpPropertySet.copy(),
		bpPropertySet: m.bpPropertySet.deepCopy(),
		moduleType:    m.moduleType,
	}
}
@@ -135,7 +145,8 @@ func (f *bpFile) AddModule(module android.BpModule) {
func (f *bpFile) newModule(moduleType string) *bpModule {
	module := &bpModule{
		moduleType:    moduleType,
		bpPropertySet: &bpPropertySet{},
	}
	(&module.bpPropertySet).init()
	module.bpPropertySet.init()
	return module
}
+2 −2
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext) android.OutputPath {

	for _, unversioned := range builder.prebuiltOrder {
		// Copy the unversioned module so it can be modified to make it versioned.
		versioned := unversioned.copy()
		versioned := unversioned.deepCopy()
		name := versioned.properties["name"].(string)
		versioned.setProperty("name", builder.versionedSdkMemberName(name))
		versioned.insertAfter("name", "sdk_member_name", name)
@@ -286,7 +286,7 @@ func generateBpContents(contents *generatedContents, bpFile *bpFile) {
	for _, bpModule := range bpFile.order {
		contents.Printfln("")
		contents.Printfln("%s {", bpModule.moduleType)
		outputPropertySet(contents, &bpModule.bpPropertySet)
		outputPropertySet(contents, bpModule.bpPropertySet)
		contents.Printfln("}")
	}
}