summaryrefslogtreecommitdiff
path: root/paste/exceptions
diff options
context:
space:
mode:
authorianb <devnull@localhost>2007-10-10 01:39:08 +0000
committerianb <devnull@localhost>2007-10-10 01:39:08 +0000
commit30d01e5ca79b1778d16557cdc50f340cbb4c34af (patch)
tree038d6ec6a0e2e2c4b978903bb288f26b284272fe /paste/exceptions
parent44b344bcffb98c15d93698be4be614eddd3ae12f (diff)
downloadpaste-30d01e5ca79b1778d16557cdc50f340cbb4c34af.tar.gz
Fix #193, when a frame locals is a Context object(?)
Diffstat (limited to 'paste/exceptions')
-rw-r--r--paste/exceptions/collector.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/paste/exceptions/collector.py b/paste/exceptions/collector.py
index 4eb7c1c..1520dd5 100644
--- a/paste/exceptions/collector.py
+++ b/paste/exceptions/collector.py
@@ -29,6 +29,7 @@ except ImportError:
from StringIO import StringIO
import linecache
from paste.exceptions import serial_number_generator
+import warnings
DEBUG_EXCEPTION_FORMATTER = True
DEBUG_IDENT_PREFIX = 'E-'
@@ -265,9 +266,14 @@ class ExceptionCollector(object):
co = f.f_code
filename = co.co_filename
name = co.co_name
- locals = f.f_locals
globals = f.f_globals
-
+ locals = f.f_locals
+ if not hasattr(locals, 'has_key'):
+ # Something weird about this frame; it's not a real dict
+ warnings.warn(
+ "Frame %s has an invalid locals(): %r" % (
+ globals.get('__name__', 'unknown'), locals))
+ locals = {}
data = {}
data['modname'] = globals.get('__name__', None)
data['filename'] = filename