Skip to content

Commit 9061dca

Browse files
authored
If spouse is already nil, short-circuit out. (#311)
This fixes a bug from a previous patch in #310.
1 parent e015efa commit 9061dca

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

family_node.go

+11-4
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,13 @@ func (node *FamilyNode) AddChild(individual *IndividualNode) *ChildNode {
138138
}
139139

140140
func (node *FamilyNode) SetHusband(individual *IndividualNode) *FamilyNode {
141-
if individual == nil {
141+
if IsNil(individual) {
142142
husband := node.Husband().Individual()
143+
if IsNil(husband) {
144+
return node
145+
}
143146
nodes := husband.Nodes()
144-
147+
145148
for _, subNode := range nodes {
146149
if subNode.Tag() == TagFamilySpouse && subNode.Value() == node.Identifier() {
147150
husband.DeleteNode(subNode)
@@ -161,8 +164,11 @@ func (node *FamilyNode) SetHusband(individual *IndividualNode) *FamilyNode {
161164
}
162165

163166
func (node *FamilyNode) SetWife(individual *IndividualNode) *FamilyNode {
164-
if individual == nil {
167+
if IsNil(individual) {
165168
wife := node.Wife().Individual()
169+
if IsNil(wife) {
170+
return node
171+
}
166172
nodes := wife.Nodes()
167173

168174
for _, subNode := range nodes {
@@ -180,7 +186,8 @@ func (node *FamilyNode) SetWife(individual *IndividualNode) *FamilyNode {
180186
n := NewNode(TagFamilySpouse, node.Identifier(), "")
181187
individual.AddNode(n)
182188

183-
return node.SetWifePointer(individual.Pointer())}
189+
return node.SetWifePointer(individual.Pointer())
190+
}
184191

185192
func (node *FamilyNode) SetWifePointer(pointer string) *FamilyNode {
186193
wife := node.Wife()

family_node_test.go

+25
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,31 @@ var familyTests = []struct {
6363
husband: nil,
6464
wife: jane,
6565
},
66+
{
67+
doc: func(doc *gedcom.Document) {
68+
jane := individual(doc, "P2", "Jane /Doe/", "3 Mar 1803", "14 June 1877")
69+
elliot := individual(doc, "P1", "Elliot /Chance/", "4 Jan 1843", "17 Mar 1907")
70+
doc.AddFamilyWithHusbandAndWife("F3", elliot, jane)
71+
},
72+
husband: elliot,
73+
wife: jane,
74+
},
75+
{
76+
doc: func(doc *gedcom.Document) {
77+
elliot := individual(doc, "P1", "Elliot /Chance/", "4 Jan 1843", "17 Mar 1907")
78+
doc.AddFamilyWithHusbandAndWife("F3", elliot, nil)
79+
},
80+
husband: elliot,
81+
wife: nil,
82+
},
83+
{
84+
doc: func(doc *gedcom.Document) {
85+
jane := individual(doc, "P2", "Jane /Doe/", "3 Mar 1803", "14 June 1877")
86+
doc.AddFamilyWithHusbandAndWife("F3", nil, jane)
87+
},
88+
husband: nil,
89+
wife: jane,
90+
},
6691
}
6792

6893
func TestFamilyNode_Husband(t *testing.T) {

0 commit comments

Comments
 (0)