fix possible setdefault refleak (closes #17328)
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index f4ad3dc..8c09e46 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -2230,14 +2230,14 @@
         return NULL;
     val = *value_addr;
     if (val == NULL) {
-        Py_INCREF(failobj);
-        Py_INCREF(key);
         if (mp->ma_keys->dk_usable <= 0) {
             /* Need to resize. */
             if (insertion_resize(mp) < 0)
                 return NULL;
             ep = find_empty_slot(mp, key, hash, &value_addr);
         }
+        Py_INCREF(failobj);
+        Py_INCREF(key);
         MAINTAIN_TRACKING(mp, key, failobj);
         ep->me_key = key;
         ep->me_hash = hash;