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) {