a16bf3
diff --git a/psutil/_psutil_aix.c b/psutil/_psutil_aix.c
a16bf3
index 8c055a4..9f58f60 100644
a16bf3
--- a/psutil/_psutil_aix.c
a16bf3
+++ b/psutil/_psutil_aix.c
a16bf3
@@ -265,8 +265,8 @@ psutil_proc_environ(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyDict_SetItem(py_retdict, py_key, py_val))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_key);
a16bf3
-            Py_DECREF(py_val);
a16bf3
+            Py_CLEAR(py_key);
a16bf3
+            Py_CLEAR(py_val);
a16bf3
         }
a16bf3
         curvar = strchr(curvar, '\0') + 1;
a16bf3
     }
a16bf3
@@ -510,10 +510,10 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_username);
a16bf3
-        Py_DECREF(py_tty);
a16bf3
-        Py_DECREF(py_hostname);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_tty);
a16bf3
+        Py_CLEAR(py_hostname);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
     endutxent();
a16bf3
 
a16bf3
@@ -570,9 +570,9 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_dev);
a16bf3
-        Py_DECREF(py_mountp);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_dev);
a16bf3
+        Py_CLEAR(py_mountp);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
         mt = getmntent(file);
a16bf3
     }
a16bf3
     endmntent(file);
a16bf3
diff --git a/psutil/_psutil_bsd.c b/psutil/_psutil_bsd.c
a16bf3
index b4264ce..7f1c492 100644
a16bf3
--- a/psutil/_psutil_bsd.c
a16bf3
+++ b/psutil/_psutil_bsd.c
a16bf3
@@ -154,7 +154,7 @@ psutil_pids(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_pid))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_pid);
a16bf3
+            Py_CLEAR(py_pid);
a16bf3
             proclist++;
a16bf3
         }
a16bf3
         free(orig_address);
a16bf3
@@ -507,8 +507,8 @@ psutil_proc_open_files(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_path);
a16bf3
-            Py_DECREF(py_tuple);
a16bf3
+            Py_CLEAR(py_path);
a16bf3
+            Py_CLEAR(py_tuple);
a16bf3
         }
a16bf3
     }
a16bf3
     free(freep);
a16bf3
@@ -670,9 +670,9 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_dev);
a16bf3
-        Py_DECREF(py_mountp);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_dev);
a16bf3
+        Py_CLEAR(py_mountp);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     free(fs);
a16bf3
@@ -765,7 +765,7 @@ psutil_net_io_counters(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyDict_SetItemString(py_retdict, ifc_name, py_ifc_info))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_ifc_info);
a16bf3
+            Py_CLEAR(py_ifc_info);
a16bf3
         }
a16bf3
         else {
a16bf3
             continue;
a16bf3
@@ -840,10 +840,10 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             fclose(fp);
a16bf3
             goto error;
a16bf3
         }
a16bf3
-        Py_DECREF(py_username);
a16bf3
-        Py_DECREF(py_tty);
a16bf3
-        Py_DECREF(py_hostname);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_tty);
a16bf3
+        Py_CLEAR(py_hostname);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     fclose(fp);
a16bf3
@@ -883,10 +883,10 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             endutxent();
a16bf3
             goto error;
a16bf3
         }
a16bf3
-        Py_DECREF(py_username);
a16bf3
-        Py_DECREF(py_tty);
a16bf3
-        Py_DECREF(py_hostname);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_tty);
a16bf3
+        Py_CLEAR(py_hostname);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     endutxent();
a16bf3
diff --git a/psutil/_psutil_linux.c b/psutil/_psutil_linux.c
a16bf3
index 717723d..0d16eb4 100644
a16bf3
--- a/psutil/_psutil_linux.c
a16bf3
+++ b/psutil/_psutil_linux.c
a16bf3
@@ -241,9 +241,9 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_dev);
a16bf3
-        Py_DECREF(py_mountp);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_dev);
a16bf3
+        Py_CLEAR(py_mountp);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
     endmntent(file);
a16bf3
     return py_retlist;
a16bf3
@@ -454,10 +454,10 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_username);
a16bf3
-        Py_DECREF(py_tty);
a16bf3
-        Py_DECREF(py_hostname);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_tty);
a16bf3
+        Py_CLEAR(py_hostname);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
     endutent();
a16bf3
     return py_retlist;
a16bf3
diff --git a/psutil/_psutil_osx.c b/psutil/_psutil_osx.c
a16bf3
index d2ca94b..76ec0ee 100644
a16bf3
--- a/psutil/_psutil_osx.c
a16bf3
+++ b/psutil/_psutil_osx.c
a16bf3
@@ -138,7 +138,7 @@ psutil_pids(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_pid))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_pid);
a16bf3
+        Py_CLEAR(py_pid);
a16bf3
         proclist++;
a16bf3
     }
a16bf3
     free(orig_address);
a16bf3
@@ -653,7 +653,7 @@ psutil_per_cpu_times(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_cputime))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_cputime);
a16bf3
+        Py_CLEAR(py_cputime);
a16bf3
     }
a16bf3
 
a16bf3
     ret = vm_deallocate(mach_task_self(), (vm_address_t)info_array,
a16bf3
@@ -841,9 +841,9 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_dev);
a16bf3
-        Py_DECREF(py_mountp);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_dev);
a16bf3
+        Py_CLEAR(py_mountp);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     free(fs);
a16bf3
@@ -911,7 +911,6 @@ psutil_proc_threads(PyObject *self, PyObject *args) {
a16bf3
     }
a16bf3
 
a16bf3
     for (j = 0; j < thread_count; j++) {
a16bf3
-        py_tuple = NULL;
a16bf3
         thread_info_count = THREAD_INFO_MAX;
a16bf3
         kr = thread_info(thread_list[j], THREAD_BASIC_INFO,
a16bf3
                          (thread_info_t)thinfo_basic, &thread_info_count);
a16bf3
@@ -934,7 +933,7 @@ psutil_proc_threads(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     ret = vm_deallocate(task, (vm_address_t)thread_list,
a16bf3
@@ -1043,10 +1042,8 @@ psutil_proc_open_files(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_tuple);
a16bf3
-            py_tuple = NULL;
a16bf3
-            Py_DECREF(py_path);
a16bf3
-            py_path = NULL;
a16bf3
+            Py_CLEAR(py_tuple);
a16bf3
+            Py_CLEAR(py_path);
a16bf3
             // --- /construct python list
a16bf3
         }
a16bf3
     }
a16bf3
@@ -1226,7 +1223,7 @@ psutil_proc_connections(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
             }
a16bf3
             else if (family == AF_UNIX) {
a16bf3
                 py_laddr = PyUnicode_DecodeFSDefault(
a16bf3
@@ -1248,9 +1245,9 @@ psutil_proc_connections(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
-                Py_DECREF(py_laddr);
a16bf3
-                Py_DECREF(py_raddr);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
+                Py_CLEAR(py_laddr);
a16bf3
+                Py_CLEAR(py_raddr);
a16bf3
             }
a16bf3
         }
a16bf3
     }
a16bf3
@@ -1370,7 +1367,7 @@ psutil_net_io_counters(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyDict_SetItemString(py_retdict, ifc_name, py_ifc_info))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_ifc_info);
a16bf3
+            Py_CLEAR(py_ifc_info);
a16bf3
         }
a16bf3
         else {
a16bf3
             continue;
a16bf3
@@ -1543,7 +1540,7 @@ psutil_disk_io_counters(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyDict_SetItemString(py_retdict, disk_name, py_disk_info))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_disk_info);
a16bf3
+            Py_CLEAR(py_disk_info);
a16bf3
 
a16bf3
             CFRelease(parent_dict);
a16bf3
             IOObjectRelease(parent);
a16bf3
@@ -1605,10 +1602,10 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             endutxent();
a16bf3
             goto error;
a16bf3
         }
a16bf3
-        Py_DECREF(py_username);
a16bf3
-        Py_DECREF(py_tty);
a16bf3
-        Py_DECREF(py_hostname);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_tty);
a16bf3
+        Py_CLEAR(py_hostname);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     endutxent();
a16bf3
diff --git a/psutil/_psutil_posix.c b/psutil/_psutil_posix.c
a16bf3
index 209e787..aa60084 100644
a16bf3
--- a/psutil/_psutil_posix.c
a16bf3
+++ b/psutil/_psutil_posix.c
a16bf3
@@ -324,11 +324,11 @@ psutil_net_if_addrs(PyObject* self, PyObject* args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
-        Py_DECREF(py_address);
a16bf3
-        Py_DECREF(py_netmask);
a16bf3
-        Py_DECREF(py_broadcast);
a16bf3
-        Py_DECREF(py_ptp);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
+        Py_CLEAR(py_address);
a16bf3
+        Py_CLEAR(py_netmask);
a16bf3
+        Py_CLEAR(py_broadcast);
a16bf3
+        Py_CLEAR(py_ptp);
a16bf3
     }
a16bf3
 
a16bf3
     freeifaddrs(ifaddr);
a16bf3
diff --git a/psutil/_psutil_sunos.c b/psutil/_psutil_sunos.c
a16bf3
index 919e76d..31d6f36 100644
a16bf3
--- a/psutil/_psutil_sunos.c
a16bf3
+++ b/psutil/_psutil_sunos.c
a16bf3
@@ -300,8 +300,8 @@ psutil_proc_environ(PyObject *self, PyObject *args) {
a16bf3
         if (PyDict_SetItem(py_retdict, py_envname, py_envval) < 0)
a16bf3
             goto error;
a16bf3
 
a16bf3
-        Py_DECREF(py_envname);
a16bf3
-        Py_DECREF(py_envval);
a16bf3
+        Py_CLEAR(py_envname);
a16bf3
+        Py_CLEAR(py_envval);
a16bf3
     }
a16bf3
 
a16bf3
     psutil_free_cstrings_array(env, env_count);
a16bf3
@@ -655,10 +655,10 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_username);
a16bf3
-        Py_DECREF(py_tty);
a16bf3
-        Py_DECREF(py_hostname);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_tty);
a16bf3
+        Py_CLEAR(py_hostname);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
     endutxent();
a16bf3
 
a16bf3
@@ -714,9 +714,9 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_dev);
a16bf3
-        Py_DECREF(py_mountp);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_dev);
a16bf3
+        Py_CLEAR(py_mountp);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
     fclose(file);
a16bf3
     return py_retlist;
a16bf3
@@ -767,8 +767,7 @@ psutil_per_cpu_times(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_cputime))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_cputime);
a16bf3
-            py_cputime = NULL;
a16bf3
+            Py_CLEAR(py_cputime);
a16bf3
         }
a16bf3
     }
a16bf3
 
a16bf3
@@ -824,7 +823,7 @@ psutil_disk_io_counters(PyObject *self, PyObject *args) {
a16bf3
                 if (PyDict_SetItemString(py_retdict, ksp->ks_name,
a16bf3
                                          py_disk_info))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_disk_info);
a16bf3
+                Py_CLEAR(py_disk_info);
a16bf3
             }
a16bf3
         }
a16bf3
         ksp = ksp->ks_next;
a16bf3
@@ -959,8 +958,8 @@ psutil_proc_memory_maps(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_path);
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_path);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
 
a16bf3
         // increment pointer
a16bf3
         p += 1;
a16bf3
@@ -1075,7 +1074,7 @@ psutil_net_io_counters(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyDict_SetItemString(py_retdict, ksp->ks_name, py_ifc_info))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_ifc_info);
a16bf3
+        Py_CLEAR(py_ifc_info);
a16bf3
         goto next;
a16bf3
 
a16bf3
 next:
a16bf3
@@ -1273,7 +1272,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
             }
a16bf3
         }
a16bf3
 #if defined(AF_INET6)
a16bf3
@@ -1287,7 +1286,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
 #ifdef NEW_MIB_COMPLIANT
a16bf3
                 processed_pid = tp6.tcp6ConnCreationProcess;
a16bf3
 #else
a16bf3
-        		processed_pid = 0;
a16bf3
+                        processed_pid = 0;
a16bf3
 #endif
a16bf3
                 if (pid != -1 && processed_pid != pid)
a16bf3
                     continue;
a16bf3
@@ -1316,14 +1315,14 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
             }
a16bf3
         }
a16bf3
 #endif
a16bf3
         // UDPv4
a16bf3
         else if (mibhdr.level == MIB2_UDP || mibhdr.level == MIB2_UDP_ENTRY) {
a16bf3
             num_ent = mibhdr.len / sizeof(mib2_udpEntry_t);
a16bf3
-	    assert(num_ent * sizeof(mib2_udpEntry_t) == mibhdr.len);
a16bf3
+            assert(num_ent * sizeof(mib2_udpEntry_t) == mibhdr.len);
a16bf3
             for (i = 0; i < num_ent; i++) {
a16bf3
                 memcpy(&ude, databuf.buf + i * sizeof ude, sizeof ude);
a16bf3
 #ifdef NEW_MIB_COMPLIANT
a16bf3
@@ -1355,7 +1354,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
             }
a16bf3
         }
a16bf3
 #if defined(AF_INET6)
a16bf3
@@ -1388,7 +1387,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
             }
a16bf3
         }
a16bf3
 #endif
a16bf3
@@ -1561,7 +1560,7 @@ psutil_net_if_stats(PyObject* self, PyObject* args) {
a16bf3
                 goto error;
a16bf3
             if (PyDict_SetItemString(py_retdict, ksp->ks_name, py_ifc_info))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_ifc_info);
a16bf3
+            Py_CLEAR(py_ifc_info);
a16bf3
         }
a16bf3
     }
a16bf3
 
a16bf3
diff --git a/psutil/_psutil_windows.c b/psutil/_psutil_windows.c
a16bf3
index beaba18..08b208d 100644
a16bf3
--- a/psutil/_psutil_windows.c
a16bf3
+++ b/psutil/_psutil_windows.c
a16bf3
@@ -221,7 +221,7 @@ psutil_pids(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_pid))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_pid);
a16bf3
+        Py_CLEAR(py_pid);
a16bf3
     }
a16bf3
 
a16bf3
     // free C array allocated for PIDs
a16bf3
@@ -1003,7 +1003,7 @@ psutil_per_cpu_times(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     free(sppi);
a16bf3
@@ -1156,7 +1156,7 @@ psutil_proc_threads(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_tuple);
a16bf3
+            Py_CLEAR(py_tuple);
a16bf3
 
a16bf3
             CloseHandle(hThread);
a16bf3
         }
a16bf3
@@ -1580,7 +1580,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_conn_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_conn_tuple);
a16bf3
+            Py_CLEAR(py_conn_tuple);
a16bf3
         }
a16bf3
 
a16bf3
         free(table);
a16bf3
@@ -1667,7 +1667,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_conn_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_conn_tuple);
a16bf3
+            Py_CLEAR(py_conn_tuple);
a16bf3
         }
a16bf3
 
a16bf3
         free(table);
a16bf3
@@ -1730,7 +1730,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_conn_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_conn_tuple);
a16bf3
+            Py_CLEAR(py_conn_tuple);
a16bf3
         }
a16bf3
 
a16bf3
         free(table);
a16bf3
@@ -1793,7 +1793,7 @@ psutil_net_connections(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_conn_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_conn_tuple);
a16bf3
+            Py_CLEAR(py_conn_tuple);
a16bf3
         }
a16bf3
 
a16bf3
         free(table);
a16bf3
@@ -2188,8 +2188,8 @@ psutil_net_io_counters(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyDict_SetItem(py_retdict, py_nic_name, py_nic_info))
a16bf3
             goto error;
a16bf3
-        Py_XDECREF(py_nic_name);
a16bf3
-        Py_XDECREF(py_nic_info);
a16bf3
+        Py_CLEAR(py_nic_name);
a16bf3
+        Py_CLEAR(py_nic_info);
a16bf3
 
a16bf3
         free(pIfRow);
a16bf3
         pCurrAddresses = pCurrAddresses->Next;
a16bf3
@@ -2304,7 +2304,7 @@ psutil_disk_io_counters(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyDict_SetItemString(py_retdict, szDeviceDisplay, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_XDECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
 
a16bf3
 next:
a16bf3
         CloseHandle(hDevice);
a16bf3
@@ -2461,7 +2461,7 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
                             goto error;
a16bf3
                         }
a16bf3
 
a16bf3
-                        Py_DECREF(py_tuple);
a16bf3
+                        Py_CLEAR(py_tuple);
a16bf3
 
a16bf3
                         // Continue looking for more mount points
a16bf3
                         mp_flag = FindNextVolumeMountPoint(mp_h, mp_buf, MAX_PATH);
a16bf3
@@ -2486,7 +2486,7 @@ psutil_disk_partitions(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
         goto next;
a16bf3
 
a16bf3
 next:
a16bf3
@@ -2610,9 +2610,9 @@ psutil_users(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyList_Append(py_retlist, py_tuple))
a16bf3
             goto error;
a16bf3
-        Py_XDECREF(py_username);
a16bf3
-        Py_XDECREF(py_address);
a16bf3
-        Py_XDECREF(py_tuple);
a16bf3
+        Py_CLEAR(py_username);
a16bf3
+        Py_CLEAR(py_address);
a16bf3
+        Py_CLEAR(py_tuple);
a16bf3
     }
a16bf3
 
a16bf3
     WTSFreeMemory(sessions);
a16bf3
@@ -2838,8 +2838,8 @@ psutil_proc_memory_maps(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_tuple);
a16bf3
-            Py_DECREF(py_str);
a16bf3
+            Py_CLEAR(py_tuple);
a16bf3
+            Py_CLEAR(py_str);
a16bf3
         }
a16bf3
         previousAllocationBase = (ULONGLONG)basicInfo.AllocationBase;
a16bf3
         baseAddress = (PCHAR)baseAddress + basicInfo.RegionSize;
a16bf3
@@ -2889,8 +2889,8 @@ psutil_ppid_map(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyDict_SetItem(py_retdict, py_pid, py_ppid))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_pid);
a16bf3
-            Py_DECREF(py_ppid);
a16bf3
+            Py_CLEAR(py_pid);
a16bf3
+            Py_CLEAR(py_ppid);
a16bf3
         } while (Process32Next(handle, &pe);;
a16bf3
     }
a16bf3
 
a16bf3
@@ -2993,8 +2993,8 @@ psutil_net_if_addrs(PyObject *self, PyObject *args) {
a16bf3
                 goto error;
a16bf3
             if (PyList_Append(py_retlist, py_tuple))
a16bf3
                 goto error;
a16bf3
-            Py_DECREF(py_tuple);
a16bf3
-            Py_DECREF(py_mac_address);
a16bf3
+            Py_CLEAR(py_tuple);
a16bf3
+            Py_CLEAR(py_mac_address);
a16bf3
         }
a16bf3
 
a16bf3
         // find out the IP address associated with the NIC
a16bf3
@@ -3070,14 +3070,14 @@ psutil_net_if_addrs(PyObject *self, PyObject *args) {
a16bf3
                     goto error;
a16bf3
                 if (PyList_Append(py_retlist, py_tuple))
a16bf3
                     goto error;
a16bf3
-                Py_DECREF(py_tuple);
a16bf3
-                Py_DECREF(py_address);
a16bf3
-                Py_DECREF(py_netmask);
a16bf3
+                Py_CLEAR(py_tuple);
a16bf3
+                Py_CLEAR(py_address);
a16bf3
+                Py_CLEAR(py_netmask);
a16bf3
 
a16bf3
                 pUnicast = pUnicast->Next;
a16bf3
             }
a16bf3
         }
a16bf3
-        Py_DECREF(py_nic_name);
a16bf3
+        Py_CLEAR(py_nic_name);
a16bf3
         pCurrAddresses = pCurrAddresses->Next;
a16bf3
     }
a16bf3
 
a16bf3
@@ -3197,8 +3197,8 @@ psutil_net_if_stats(PyObject *self, PyObject *args) {
a16bf3
             goto error;
a16bf3
         if (PyDict_SetItem(py_retdict, py_nic_name, py_ifc_info))
a16bf3
             goto error;
a16bf3
-        Py_DECREF(py_nic_name);
a16bf3
-        Py_DECREF(py_ifc_info);
a16bf3
+        Py_CLEAR(py_nic_name);
a16bf3
+        Py_CLEAR(py_ifc_info);
a16bf3
     }
a16bf3
 
a16bf3
     free(pIfTable);