diff options
author | Ludwig Hähne <pankrat@tigris.org> | 2008-09-10 16:24:15 (GMT) |
---|---|---|
committer | Ludwig Hähne <pankrat@tigris.org> | 2008-09-10 16:24:15 (GMT) |
commit | 1c280140f557190a9625397bbe9e5a3a540efac5 (patch) | |
tree | 481d1b99880d2a2d4bf3470fca80032eaa237597 /src/engine/SCons/Defaults.py | |
parent | 311e482d13e4bfbcd643e0fb7cdc017ac55b6dc9 (diff) | |
download | SCons-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.py | 5 |
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): |