[pypy-svn] r59994 - pypy/branch/oo-jit/pypy/rpython/lltypesystem
arigo at codespeak.net
arigo at codespeak.net
Wed Nov 19 18:20:24 CET 2008
Author: arigo
Date: Wed Nov 19 18:20:24 2008
New Revision: 59994
Modified:
pypy/branch/oo-jit/pypy/rpython/lltypesystem/ll2ctypes.py
Log:
Fix for a Void type in a struct.
Add logic for --pdb logic.
Modified: pypy/branch/oo-jit/pypy/rpython/lltypesystem/ll2ctypes.py
==============================================================================
--- pypy/branch/oo-jit/pypy/rpython/lltypesystem/ll2ctypes.py (original)
+++ pypy/branch/oo-jit/pypy/rpython/lltypesystem/ll2ctypes.py Wed Nov 19 18:20:24 2008
@@ -7,6 +7,7 @@
ctypes = None
import os
+from pypy import conftest
from pypy.rpython.lltypesystem import lltype, llmemory
from pypy.rpython.extfunc import ExtRegistryEntry
from pypy.rlib.objectmodel import Symbolic, ComputedIntSymbolic
@@ -231,8 +232,9 @@
field_value = getattr(container, field_name)
if not isinstance(FIELDTYPE, lltype.ContainerType):
# regular field
- setattr(cstruct, field_name, lltype2ctypes(field_value, rtyper,
- acceptgckind=acceptgckind))
+ if FIELDTYPE != lltype.Void:
+ setattr(cstruct, field_name, lltype2ctypes(field_value, rtyper,
+ acceptgckind=acceptgckind))
else:
# inlined substructure/subarray
if isinstance(FIELDTYPE, lltype.Struct):
@@ -478,6 +480,16 @@
_all_callbacks.append(res)
res = ctypes.cast(res, ctypes.c_void_p).value
return res
+
+ if conftest.option.usepdb:
+ callback_original = callback
+ def callback(*cargs):
+ try:
+ return callback_original(*cargs)
+ except:
+ import pdb, sys; pdb.post_mortem(sys.exc_traceback)
+ raise
+
if isinstance(T.TO.RESULT, lltype.Ptr):
TMod = lltype.Ptr(lltype.FuncType(T.TO.ARGS,
lltype.Signed))
More information about the Pypy-commit
mailing list