diff options
author | Pearu Peterson <pearu.peterson@gmail.com> | 2021-02-09 15:39:00 +0200 |
---|---|---|
committer | Pearu Peterson <pearu.peterson@gmail.com> | 2021-02-09 15:39:00 +0200 |
commit | af44a8198524ab532a0c1b2410b5706768d5a77e (patch) | |
tree | 273be67e3e99bded39999afa8f056fd9246bb32b | |
parent | 8468f9f1b51d3dc64c80020ff69c3a7e08f3aa84 (diff) | |
download | numpy-af44a8198524ab532a0c1b2410b5706768d5a77e.tar.gz |
MAINT: Debug issue (2)
-rw-r--r-- | numpy/f2py/cb_rules.py | 6 | ||||
-rw-r--r-- | numpy/f2py/cfuncs.py | 4 | ||||
-rwxr-xr-x | numpy/f2py/rules.py | 2 |
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); |