summaryrefslogtreecommitdiff
path: root/numpy/f2py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/f2py')
-rw-r--r--numpy/f2py/cb_rules.py16
-rwxr-xr-xnumpy/f2py/rules.py5
-rw-r--r--numpy/f2py/tests/util.py2
3 files changed, 20 insertions, 3 deletions
diff --git a/numpy/f2py/cb_rules.py b/numpy/f2py/cb_rules.py
index 60bc1ad11..9efb9683b 100644
--- a/numpy/f2py/cb_rules.py
+++ b/numpy/f2py/cb_rules.py
@@ -40,6 +40,15 @@ typedef struct {
jmp_buf jmpbuf;
} #name#_t;
+static void show_#name#(#name#_t *ptr) {
+ if (ptr != NULL) {
+ CFUNCSMESSPY(\"show_#name#: capi=\", ptr->capi);
+ CFUNCSMESSPY(\"show_#name#: args_capi=\", ptr->args_capi);
+ } else {
+ CFUNCSMESS(\"show_#name#: ptr=NULL");
+ }
+}
+
#if defined(F2PY_THREAD_LOCAL_DECL) && !defined(F2PY_USE_PYTHON_TLS)
static F2PY_THREAD_LOCAL_DECL #name#_t *_active_#name# = NULL;
@@ -82,6 +91,11 @@ static #name#_t *get_active_#name#(void) {
f2py_cb_start_clock();
#endif
cb = get_active_#name#();
+ show_#name#(cb);
+ if (cb == NULL) {
+ PyErr_SetString(#modulename#_error,\"cb: No active callback #name#!\\n\");
+ goto capi_fail;
+ }
capi_arglist = cb->args_capi;
CFUNCSMESS(\"cb:Call-back function #name# (maxnofargs=#maxnofargs#(-#nofoptargs#))\\n\");
CFUNCSMESSPY(\"cb:#name#_capi=\",cb->capi);
@@ -180,7 +194,7 @@ capi_return_pt:
}
#endtitle#
""",
- 'need': ['setjmp.h', 'CFUNCSMESS', 'F2PY_THREAD_LOCAL_DECL'],
+ 'need': ['setjmp.h', 'CFUNCSMESS', 'CFUNCSMESSPY', 'F2PY_THREAD_LOCAL_DECL'],
'maxnofargs': '#maxnofargs#',
'nofoptargs': '#nofoptargs#',
'docstr': """\
diff --git a/numpy/f2py/rules.py b/numpy/f2py/rules.py
index b9cbc5487..548141a9f 100755
--- a/numpy/f2py/rules.py
+++ b/numpy/f2py/rules.py
@@ -813,12 +813,15 @@ if (#varname#_cb.capi==Py_None) {
{l_not(isintent_callback): """ fprintf(stderr,\"#vardebugshowvalue# (call-back in C).\\n\",#cbname#);"""}]},
"""\
CFUNCSMESS(\"Saving callback variables for `#varname#`.\\n\");
- #varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);""",
+ #varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);
+ show_#cbname#(#varname#_cb_ptr);
+ """,
],
'cleanupfrompyobj':
"""\
CFUNCSMESS(\"Restoring callback variables for `#varname#`.\\n\");
#varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);
+ show_#cbname#(#varname#_cb_ptr);
Py_DECREF(#varname#_cb.args_capi);
}""",
'need': ['SWAP', 'create_cb_arglist'],
diff --git a/numpy/f2py/tests/util.py b/numpy/f2py/tests/util.py
index d5fa76fed..cdac715b3 100644
--- a/numpy/f2py/tests/util.py
+++ b/numpy/f2py/tests/util.py
@@ -92,7 +92,7 @@ def build_module(source_files, options=[], skip=[], only=[], module_name=None):
Compile and import a f2py module, built from the given files.
"""
-
+ options = options + ['--debug-capi']
code = ("import sys; sys.path = %s; import numpy.f2py as f2py2e; "
"f2py2e.main()" % repr(sys.path))