Issue #6012: Add cleanup support to O& argument parsing.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 3bd1efd..47e0933 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1539,6 +1539,10 @@
     PyObject *output = NULL;
     Py_ssize_t size;
     void *data;
+    if (arg == NULL) {
+        Py_DECREF(*(PyObject**)addr);
+        return 1;
+    }
     if (PyBytes_Check(arg) || PyByteArray_Check(arg)) {
         output = arg;
         Py_INCREF(output);
@@ -1573,7 +1577,7 @@
         return 0;
     }
     *(PyObject**)addr = output;
-    return 1;
+    return Py_CLEANUP_SUPPORTED;
 }