summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2015-05-25 12:25:02 +0200
committerArmin Ronacher <armin.ronacher@active-4.com>2015-05-25 12:25:02 +0200
commit0bfb60f831352982ed484a669d28614af6db77a2 (patch)
tree55740f9d49ec92cc466761c4ec9fe7f2faf212b0
parent0c1f192670fff219ae1c61fb69c75ae4fb0fd50d (diff)
parentf4ddad8b44258fde8f70ee1b06f7ee03906cf661 (diff)
downloadjinja2-0bfb60f831352982ed484a669d28614af6db77a2.tar.gz
Merge branch 'pr/451'
-rw-r--r--jinja2/debug.py35
1 files changed, 24 insertions, 11 deletions
diff --git a/jinja2/debug.py b/jinja2/debug.py
index ee75a52..3252748 100644
--- a/jinja2/debug.py
+++ b/jinja2/debug.py
@@ -15,7 +15,7 @@ import traceback
from types import TracebackType, CodeType
from jinja2.utils import missing, internal_code
from jinja2.exceptions import TemplateSyntaxError
-from jinja2._compat import iteritems, reraise
+from jinja2._compat import iteritems, reraise, PY2
# on pypy we can take advantage of transparent proxies
try:
@@ -245,12 +245,21 @@ def fake_exc_info(exc_info, filename, lineno):
location = 'block "%s"' % function[6:]
else:
location = 'template'
- code = CodeType(0, code.co_nlocals, code.co_stacksize,
- code.co_flags, code.co_code, code.co_consts,
- code.co_names, code.co_varnames, filename,
- location, code.co_firstlineno,
- code.co_lnotab, (), ())
- except:
+
+ if PY2:
+ code = CodeType(0, code.co_nlocals, code.co_stacksize,
+ code.co_flags, code.co_code, code.co_consts,
+ code.co_names, code.co_varnames, filename,
+ location, code.co_firstlineno,
+ code.co_lnotab, (), ())
+ else:
+ code = CodeType(0, code.co_kwonlyargcount,
+ code.co_nlocals, code.co_stacksize,
+ code.co_flags, code.co_code, code.co_consts,
+ code.co_names, code.co_varnames, filename,
+ location, code.co_firstlineno,
+ code.co_lnotab, (), ())
+ except Exception as e:
pass
# execute the code and catch the new traceback
@@ -273,11 +282,15 @@ def _init_ugly_crap():
import ctypes
from types import TracebackType
- # figure out size of _Py_ssize_t
- if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'):
- _Py_ssize_t = ctypes.c_int64
+ if PY2:
+ # figure out size of _Py_ssize_t for Python 2:
+ if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'):
+ _Py_ssize_t = ctypes.c_int64
+ else:
+ _Py_ssize_t = ctypes.c_int
else:
- _Py_ssize_t = ctypes.c_int
+ # platform ssize_t on Python 3
+ _Py_ssize_t = ctypes.c_ssize_t
# regular python
class _PyObject(ctypes.Structure):