summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Defaults.py
diff options
context:
space:
mode:
authorLudwig Hähne <pankrat@tigris.org>2008-09-10 16:24:15 (GMT)
committerLudwig Hähne <pankrat@tigris.org>2008-09-10 16:24:15 (GMT)
commit1c280140f557190a9625397bbe9e5a3a540efac5 (patch)
tree481d1b99880d2a2d4bf3470fca80032eaa237597 /src/engine/SCons/Defaults.py
parent311e482d13e4bfbcd643e0fb7cdc017ac55b6dc9 (diff)
downloadSCons-1c280140f557190a9625397bbe9e5a3a540efac5.zip
SCons-1c280140f557190a9625397bbe9e5a3a540efac5.tar.gz
SCons-1c280140f557190a9625397bbe9e5a3a540efac5.tar.bz2
Issue 2149: Avoid reference cycles caused by frame objects
Diffstat (limited to 'src/engine/SCons/Defaults.py')
-rw-r--r--src/engine/SCons/Defaults.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index 067f22d..b790a49 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -424,7 +424,10 @@ class Variable_Method_Caller:
self.method = method
def __call__(self, *args, **kw):
try: 1/0
- except ZeroDivisionError: frame = sys.exc_info()[2].tb_frame
+ except ZeroDivisionError:
+ # Don't start iterating with the current stack-frame to
+ # prevent creating reference cycles (f_back is safe).
+ frame = sys.exc_info()[2].tb_frame.f_back
variable = self.variable
while frame:
if frame.f_locals.has_key(variable):