merge 3.2
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 094d071..e42db5b 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -7844,12 +7844,16 @@
     int err;
 
     if (!PyArg_ParseTuple(args, "O&:unsetenv",
+
                           PyUnicode_FSConverter, &name))
         return NULL;
 
+
     err = unsetenv(PyBytes_AS_STRING(name));
-    if (err)
+    if (err) {
+        Py_DECREF(name);
         return posix_error();
+    }
 
     /* Remove the key from posix_putenv_garbage;
      * this will cause it to be collected.  This has to