Issue #20440: Massive replacing unsafe attribute setting code with special
macro Py_SETREF.
diff --git a/Modules/cdmodule.c b/Modules/cdmodule.c
index 9ee9b0b..9ef8727 100644
--- a/Modules/cdmodule.c
+++ b/Modules/cdmodule.c
@@ -628,12 +628,10 @@
CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback,
(void *) self);
#endif
- Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallback);
Py_INCREF(func);
- self->ob_cdcallbacks[type].ob_cdcallback = func;
- Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
+ Py_SETREF(self->ob_cdcallbacks[type].ob_cdcallback, func);
Py_INCREF(funcarg);
- self->ob_cdcallbacks[type].ob_cdcallbackarg = funcarg;
+ Py_SETREF(self->ob_cdcallbacks[type].ob_cdcallbackarg, funcarg);
/*
if (type == cd_audio) {