Replace PyUnicode_Decode(buf, strlen(buf), Py_FileSystemDefaultEncoding,
"surrogateescape") by PyUnicode_DecodeFSDefault(val).
diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c
index 0dcef06..912d139 100644
--- a/Modules/grpmodule.c
+++ b/Modules/grpmodule.c
@@ -46,11 +46,8 @@
         Py_DECREF(v);
         return NULL;
     }
-#define FSDECODE(val) PyUnicode_Decode(val, strlen(val),\
-                                       Py_FileSystemDefaultEncoding,\
-                                       "surrogateescape")
     for (member = p->gr_mem; *member != NULL; member++) {
-        PyObject *x = FSDECODE(*member);
+        PyObject *x = PyUnicode_DecodeFSDefault(*member);
         if (x == NULL || PyList_Append(w, x) != 0) {
             Py_XDECREF(x);
             Py_DECREF(w);
@@ -61,13 +58,13 @@
     }
 
 #define SET(i,val) PyStructSequence_SET_ITEM(v, i, val)
-    SET(setIndex++, FSDECODE(p->gr_name));
+    SET(setIndex++, PyUnicode_DecodeFSDefault(p->gr_name));
 #ifdef __VMS
     SET(setIndex++, Py_None);
     Py_INCREF(Py_None);
 #else
     if (p->gr_passwd)
-	    SET(setIndex++, FSDECODE(p->gr_passwd));
+	    SET(setIndex++, PyUnicode_DecodeFSDefault(p->gr_passwd));
     else {
 	    SET(setIndex++, Py_None);
 	    Py_INCREF(Py_None);
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 0d6f8f0..a48f233 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2031,7 +2031,7 @@
         return posix_error();
     if (use_bytes)
         return PyBytes_FromStringAndSize(buf, strlen(buf));
-    return PyUnicode_Decode(buf, strlen(buf), Py_FileSystemDefaultEncoding,"surrogateescape");
+    return PyUnicode_DecodeFSDefault(buf);
 }
 
 PyDoc_STRVAR(posix_getcwd__doc__,
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 1547cdf..827fa43 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -49,7 +49,7 @@
 sets(PyObject *v, int i, const char* val)
 {
   if (val) {
-	  PyObject *o = PyUnicode_Decode(val, strlen(val),
+	  PyObject *o = PyUnicode_DecodeFSDefault(val, strlen(val),
 					 Py_FileSystemDefaultEncoding,
 					 "surrogateescape");
 	  PyStructSequence_SET_ITEM(v, i, o);
diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c
index 230b57c..422ab03 100644
--- a/Modules/spwdmodule.c
+++ b/Modules/spwdmodule.c
@@ -60,9 +60,7 @@
 sets(PyObject *v, int i, const char* val)
 {
   if (val) {
-	  PyObject *o = PyUnicode_Decode(val, strlen(val),
-					 Py_FileSystemDefaultEncoding,
-					 "surrogateescape");
+	  PyObject *o = PyUnicode_DecodeFSDefault(val);
 	  PyStructSequence_SET_ITEM(v, i, o);
   } else {
 	  PyStructSequence_SET_ITEM(v, i, Py_None);