Avoid infinite recursion in search for spouses of descendents

svn: r986
This commit is contained in:
Don Allingham 2002-05-12 14:36:50 +00:00
parent fe9ab88ef0
commit 913a276b65

View File

@ -198,27 +198,26 @@ class IsDescendantFamilyOf(Rule):
return "Is a descendant family member of" return "Is a descendant family member of"
def apply(self,p): def apply(self,p):
return self.search(p) return self.search(p,1)
def search(self,p): def search(self,p,val):
if p.getId() == self.list[0]: if p.getId() == self.list[0]:
return 1 return 1
for (f,r1,r2) in p.getParentList(): for (f,r1,r2) in p.getParentList():
for p1 in [f.getMother(),f.getFather()]: for p1 in [f.getMother(),f.getFather()]:
if p1: if p1:
if self.search(p1): if self.search(p1,0):
return 1 return 1
if val:
for fm in p.getFamilyList(): for fm in p.getFamilyList():
if p == fm.getFather(): if p == fm.getFather():
s = fm.getMother() s = fm.getMother()
else: else:
s = fm.getFather() s = fm.getFather()
if s: if s:
for (f,r1,r2) in s.getParentList(): if self.search(s,0):
for p1 in [f.getMother(),f.getFather()]:
if p1:
if self.search(p1):
return 1 return 1
return 0 return 0
#------------------------------------------------------------------------- #-------------------------------------------------------------------------