summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/NodeTests.py5
-rw-r--r--src/engine/SCons/Node/__init__.py15
2 files changed, 18 insertions, 2 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 50de2b0..ad9eb66 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -1314,8 +1314,11 @@ class NodeTestCase(unittest.TestCase):
n1 = SCons.Node.Node()
n2 = SCons.Node.Node()
assert n1.waiting_parents == {}, n1.waiting_parents
- n1.add_to_waiting_parents(n2)
+ r = n1.add_to_waiting_parents(n2)
+ assert r == 1, r
assert n1.waiting_parents == {n2:1}, n1.waiting_parents
+ r = n1.add_to_waiting_parents(n2)
+ assert r == 0, r
def test_call_for_all_waiting_parents(self):
"""Test the call_for_all_waiting_parents() method"""
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index fa682a2..6644d7a 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -336,7 +336,20 @@ class Node:
self.waiting_s_e[node] = 1
def add_to_waiting_parents(self, node):
- self.waiting_parents[node] = 1
+ """
+ Returns the number of nodes added to our waiting parents list:
+ 1 if we add a unique waiting parent, 0 if not. (Note that the
+ returned values are intended to be used to increment a reference
+ count, so don't think you can "clean up" this function by using
+ True and False instead...)
+ """
+ wp = self.waiting_parents
+ if wp.has_key(node):
+ result = 0
+ else:
+ result = 1
+ wp[node] = 1
+ return result
def call_for_all_waiting_parents(self, func):
func(self)