summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPearu Peterson <pearu.peterson@gmail.com>2021-02-09 15:39:00 +0200
committerPearu Peterson <pearu.peterson@gmail.com>2021-02-09 15:39:00 +0200
commitaf44a8198524ab532a0c1b2410b5706768d5a77e (patch)
tree273be67e3e99bded39999afa8f056fd9246bb32b
parent8468f9f1b51d3dc64c80020ff69c3a7e08f3aa84 (diff)
downloadnumpy-af44a8198524ab532a0c1b2410b5706768d5a77e.tar.gz
MAINT: Debug issue (2)
-rw-r--r--numpy/f2py/cb_rules.py6
-rw-r--r--numpy/f2py/cfuncs.py4
-rwxr-xr-xnumpy/f2py/rules.py2
3 files changed, 10 insertions, 2 deletions
diff --git a/numpy/f2py/cb_rules.py b/numpy/f2py/cb_rules.py
index 9efb9683b..a4cb546a3 100644
--- a/numpy/f2py/cb_rules.py
+++ b/numpy/f2py/cb_rules.py
@@ -45,7 +45,7 @@ static void show_#name#(#name#_t *ptr) {
CFUNCSMESSPY(\"show_#name#: capi=\", ptr->capi);
CFUNCSMESSPY(\"show_#name#: args_capi=\", ptr->args_capi);
} else {
- CFUNCSMESS(\"show_#name#: ptr=NULL");
+ CFUNCSMESS(\"show_#name#: ptr=NULL\\n");
}
}
@@ -54,6 +54,7 @@ static void show_#name#(#name#_t *ptr) {
static F2PY_THREAD_LOCAL_DECL #name#_t *_active_#name# = NULL;
static #name#_t *swap_active_#name#(#name#_t *ptr) {
+ CFUNCSMESS2(\"swap_active_#name#: active=%p, ptr=%p\\n", _active_#name#, ptr);
#name#_t *prev = _active_#name#;
_active_#name# = ptr;
return prev;
@@ -79,7 +80,7 @@ static #name#_t *get_active_#name#(void) {
/*typedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);*/
#static# #rctype# #callbackname# (#optargs##args##strarglens##noargs#) {
- #name#_t *cb;
+ #name#_t *cb = NULL;
PyTupleObject *capi_arglist = NULL;
PyObject *capi_return = NULL;
PyObject *capi_tmp = NULL;
@@ -93,6 +94,7 @@ f2py_cb_start_clock();
cb = get_active_#name#();
show_#name#(cb);
if (cb == NULL) {
+ capi_longjmp_ok = 0;
PyErr_SetString(#modulename#_error,\"cb: No active callback #name#!\\n\");
goto capi_fail;
}
diff --git a/numpy/f2py/cfuncs.py b/numpy/f2py/cfuncs.py
index 40496ccf1..c6e0a5795 100644
--- a/numpy/f2py/cfuncs.py
+++ b/numpy/f2py/cfuncs.py
@@ -96,11 +96,15 @@ typedefs['string'] = """typedef char * string;"""
cppmacros['CFUNCSMESS'] = """\
#ifdef DEBUGCFUNCS
#define CFUNCSMESS(mess) fprintf(stderr,\"debug-capi:\"mess);
+#define CFUNCSMESS1(mess, arg) fprintf(stderr,\"debug-capi:\"mess, arg);
+#define CFUNCSMESS2(mess, arg1, arg2) fprintf(stderr,\"debug-capi:\"mess, arg1, arg2);
#define CFUNCSMESSPY(mess,obj) CFUNCSMESS(mess) \\
PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\\
fprintf(stderr,\"\\n\");
#else
#define CFUNCSMESS(mess)
+#define CFUNCSMESS1(mess, arg)
+#define CFUNCSMESS2(mess, arg1, arg2)
#define CFUNCSMESSPY(mess,obj)
#endif
"""
diff --git a/numpy/f2py/rules.py b/numpy/f2py/rules.py
index 548141a9f..11767d15c 100755
--- a/numpy/f2py/rules.py
+++ b/numpy/f2py/rules.py
@@ -813,6 +813,7 @@ 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\");
+ show_#cbname#(#varname#_cb_ptr);
#varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);
show_#cbname#(#varname#_cb_ptr);
""",
@@ -820,6 +821,7 @@ if (#varname#_cb.capi==Py_None) {
'cleanupfrompyobj':
"""\
CFUNCSMESS(\"Restoring callback variables for `#varname#`.\\n\");
+ show_#cbname#(#varname#_cb_ptr);
#varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);
show_#cbname#(#varname#_cb_ptr);
Py_DECREF(#varname#_cb.args_capi);