summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2019-07-06 13:05:37 -0400
committerNed Batchelder <ned@nedbatchelder.com>2019-07-06 13:06:53 -0400
commit0911fe5e8986dc63c3e9fce8815b4730d02f1d01 (patch)
tree4643ec2092bacefe3ad9f2d9705eb61b0fa8015c
parentcfdcacea473dede9fb779256c812ff6a098a0714 (diff)
downloadpython-coveragepy-git-0911fe5e8986dc63c3e9fce8815b4730d02f1d01.tar.gz
Revert "Remove a copy of a private macro, and just use it" #809
This reverts commit b777c96f885b8d91b5339940a31a6a8ec4bfa3f9.
-rw-r--r--coverage/ctracer/tracer.c2
-rw-r--r--coverage/ctracer/util.h8
2 files changed, 9 insertions, 1 deletions
diff --git a/coverage/ctracer/tracer.c b/coverage/ctracer/tracer.c
index d497a94d..7d639112 100644
--- a/coverage/ctracer/tracer.c
+++ b/coverage/ctracer/tracer.c
@@ -541,7 +541,7 @@ CTracer_handle_call(CTracer *self, PyFrameObject *frame)
/* Make the frame right in case settrace(gettrace()) happens. */
Py_INCREF(self);
- Py_XSETREF(frame->f_trace, (PyObject*)self);
+ My_XSETREF(frame->f_trace, (PyObject*)self);
/* A call event is really a "start frame" event, and can happen for
* re-entering a generator also. f_lasti is -1 for a true call, and a
diff --git a/coverage/ctracer/util.h b/coverage/ctracer/util.h
index cb8aceb9..5cba9b30 100644
--- a/coverage/ctracer/util.h
+++ b/coverage/ctracer/util.h
@@ -44,6 +44,14 @@
#endif /* Py3k */
+// Undocumented, and not in all 2.7.x, so our own copy of it.
+#define My_XSETREF(op, op2) \
+ do { \
+ PyObject *_py_tmp = (PyObject *)(op); \
+ (op) = (op2); \
+ Py_XDECREF(_py_tmp); \
+ } while (0)
+
/* The values returned to indicate ok or error. */
#define RET_OK 0
#define RET_ERROR -1