Issue #20041: Fixed TypeError when frame.f_trace is set to None.
Patch by Xavier de Gaye.
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index bdf06db..9aadd61 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -349,15 +349,13 @@
 static int
 frame_settrace(PyFrameObject *f, PyObject* v, void *closure)
 {
-    PyObject* old_value;
-
     /* We rely on f_lineno being accurate when f_trace is set. */
     f->f_lineno = PyFrame_GetLineNumber(f);
 
-    old_value = f->f_trace;
+    if (v == Py_None)
+        v = NULL;
     Py_XINCREF(v);
-    f->f_trace = v;
-    Py_XDECREF(old_value);
+    Py_XSETREF(f->f_trace, v);
 
     return 0;
 }