Some of the newer routines return an OSErr, like most toolbox calls, in stead of depending on ResError(). Second half of fix for #531291.

2.2.1 candidate.
diff --git a/Mac/Modules/res/_Resmodule.c b/Mac/Modules/res/_Resmodule.c
index 9f14aec..4a35596 100644
--- a/Mac/Modules/res/_Resmodule.c
+++ b/Mac/Modules/res/_Resmodule.c
@@ -628,16 +628,13 @@
 static PyObject *Res_ResError(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = ResError();
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("h",
-	                     _rv);
+	_err = ResError();
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
 	return _res;
 }
 
@@ -1222,21 +1219,18 @@
 static PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	SInt16 refNum;
 	RsrcChainLocation where;
 	if (!PyArg_ParseTuple(_args, "hh",
 	                      &refNum,
 	                      &where))
 		return NULL;
-	_rv = InsertResourceFile(refNum,
-	                         where);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("h",
-	                     _rv);
+	_err = InsertResourceFile(refNum,
+	                          where);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
 	return _res;
 }
 #endif
@@ -1246,18 +1240,15 @@
 static PyObject *Res_DetachResourceFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	SInt16 refNum;
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &refNum))
 		return NULL;
-	_rv = DetachResourceFile(refNum);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("h",
-	                     _rv);
+	_err = DetachResourceFile(refNum);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
 	return _res;
 }
 #endif
@@ -1294,7 +1285,7 @@
 static PyObject *Res_FSpOpenOrphanResFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	FSSpec spec;
 	SignedByte permission;
 	SInt16 refNum;
@@ -1302,15 +1293,11 @@
 	                      PyMac_GetFSSpec, &spec,
 	                      &permission))
 		return NULL;
-	_rv = FSpOpenOrphanResFile(&spec,
-	                           permission,
-	                           &refNum);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("hh",
-	                     _rv,
+	_err = FSpOpenOrphanResFile(&spec,
+	                            permission,
+	                            &refNum);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("h",
 	                     refNum);
 	return _res;
 }
@@ -1321,17 +1308,13 @@
 static PyObject *Res_GetTopResourceFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	SInt16 refNum;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = GetTopResourceFile(&refNum);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("hh",
-	                     _rv,
+	_err = GetTopResourceFile(&refNum);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("h",
 	                     refNum);
 	return _res;
 }
@@ -1342,20 +1325,16 @@
 static PyObject *Res_GetNextResourceFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	SInt16 curRefNum;
 	SInt16 nextRefNum;
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &curRefNum))
 		return NULL;
-	_rv = GetNextResourceFile(curRefNum,
-	                          &nextRefNum);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("hh",
-	                     _rv,
+	_err = GetNextResourceFile(curRefNum,
+	                           &nextRefNum);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("h",
 	                     nextRefNum);
 	return _res;
 }
@@ -1407,8 +1386,8 @@
 		if (_err != noErr) return PyMac_Error(_err);
 	}
 	_res = Py_BuildValue("O&O&",
-	                     PyMac_BuildFSRef, newRef,
-	                     PyMac_BuildFSSpec, newSpec);
+	                     PyMac_BuildFSRef, &newRef,
+	                     PyMac_BuildFSSpec, &newSpec);
 	return _res;
 }
 
@@ -1441,7 +1420,7 @@
 static PyObject *Res_FSCreateResourceFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	FSRef parentRef;
 	UniChar *nameLength__in__;
 	UniCharCount nameLength__len__;
@@ -1458,21 +1437,17 @@
 		return NULL;
 	nameLength__len__ = nameLength__in_len__;
 	forkNameLength__len__ = forkNameLength__in_len__;
-	_rv = FSCreateResourceFile(&parentRef,
-	                           nameLength__len__, nameLength__in__,
-	                           0,
-	                           (FSCatalogInfo *)0,
-	                           forkNameLength__len__, forkNameLength__in__,
-	                           &newRef,
-	                           &newSpec);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("hO&O&",
-	                     _rv,
-	                     PyMac_BuildFSRef, newRef,
-	                     PyMac_BuildFSSpec, newSpec);
+	_err = FSCreateResourceFile(&parentRef,
+	                            nameLength__len__, nameLength__in__,
+	                            0,
+	                            (FSCatalogInfo *)0,
+	                            forkNameLength__len__, forkNameLength__in__,
+	                            &newRef,
+	                            &newSpec);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&O&",
+	                     PyMac_BuildFSRef, &newRef,
+	                     PyMac_BuildFSSpec, &newSpec);
 	return _res;
 }
 #endif
@@ -1482,7 +1457,7 @@
 static PyObject *Res_FSOpenResourceFile(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
-	OSErr _rv;
+	OSErr _err;
 	FSRef ref;
 	UniChar *forkNameLength__in__;
 	UniCharCount forkNameLength__len__;
@@ -1495,16 +1470,12 @@
 	                      &permissions))
 		return NULL;
 	forkNameLength__len__ = forkNameLength__in_len__;
-	_rv = FSOpenResourceFile(&ref,
-	                         forkNameLength__len__, forkNameLength__in__,
-	                         permissions,
-	                         &refNum);
-	{
-		OSErr _err = ResError();
-		if (_err != noErr) return PyMac_Error(_err);
-	}
-	_res = Py_BuildValue("hh",
-	                     _rv,
+	_err = FSOpenResourceFile(&ref,
+	                          forkNameLength__len__, forkNameLength__in__,
+	                          permissions,
+	                          &refNum);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("h",
 	                     refNum);
 	return _res;
 }
@@ -1573,7 +1544,7 @@
 	{"CloseResFile", (PyCFunction)Res_CloseResFile, 1,
 	 "(short refNum) -> None"},
 	{"ResError", (PyCFunction)Res_ResError, 1,
-	 "() -> (OSErr _rv)"},
+	 "() -> None"},
 	{"CurResFile", (PyCFunction)Res_CurResFile, 1,
 	 "() -> (short _rv)"},
 
@@ -1644,12 +1615,12 @@
 
 #if TARGET_API_MAC_CARBON
 	{"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1,
-	 "(SInt16 refNum, RsrcChainLocation where) -> (OSErr _rv)"},
+	 "(SInt16 refNum, RsrcChainLocation where) -> None"},
 #endif
 
 #if TARGET_API_MAC_CARBON
 	{"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1,
-	 "(SInt16 refNum) -> (OSErr _rv)"},
+	 "(SInt16 refNum) -> None"},
 #endif
 
 #if TARGET_API_MAC_CARBON
@@ -1659,17 +1630,17 @@
 
 #if TARGET_API_MAC_CARBON
 	{"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1,
-	 "(FSSpec spec, SignedByte permission) -> (OSErr _rv, SInt16 refNum)"},
+	 "(FSSpec spec, SignedByte permission) -> (SInt16 refNum)"},
 #endif
 
 #if TARGET_API_MAC_CARBON
 	{"GetTopResourceFile", (PyCFunction)Res_GetTopResourceFile, 1,
-	 "() -> (OSErr _rv, SInt16 refNum)"},
+	 "() -> (SInt16 refNum)"},
 #endif
 
 #if TARGET_API_MAC_CARBON
 	{"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1,
-	 "(SInt16 curRefNum) -> (OSErr _rv, SInt16 nextRefNum)"},
+	 "(SInt16 curRefNum) -> (SInt16 nextRefNum)"},
 #endif
 	{"FSOpenResFile", (PyCFunction)Res_FSOpenResFile, 1,
 	 "(FSRef ref, SignedByte permission) -> (short _rv)"},
@@ -1680,12 +1651,12 @@
 
 #if TARGET_API_MAC_CARBON
 	{"FSCreateResourceFile", (PyCFunction)Res_FSCreateResourceFile, 1,
-	 "(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (OSErr _rv, FSRef newRef, FSSpec newSpec)"},
+	 "(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)"},
 #endif
 
 #if TARGET_API_MAC_CARBON
 	{"FSOpenResourceFile", (PyCFunction)Res_FSOpenResourceFile, 1,
-	 "(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (OSErr _rv, SInt16 refNum)"},
+	 "(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)"},
 #endif
 	{"Resource", (PyCFunction)Res_Resource, 1,
 	 "Convert a string to a resource object.\n\nThe created resource object is actually just a handle,\napply AddResource() to write it to a resource file.\nSee also the Handle() docstring.\n"},
diff --git a/Mac/Modules/res/ressupport.py b/Mac/Modules/res/ressupport.py
index 6fedcf3..0a7e187 100644
--- a/Mac/Modules/res/ressupport.py
+++ b/Mac/Modules/res/ressupport.py
@@ -8,14 +8,15 @@
 class ResMixIn:
 
 	def checkit(self):
-		OutLbrace()
-		Output("OSErr _err = ResError();")
-		Output("if (_err != noErr) return PyMac_Error(_err);")
-		OutRbrace()
+		if self.returntype.__class__ != OSErrType:
+			OutLbrace()
+			Output("OSErr _err = ResError();")
+			Output("if (_err != noErr) return PyMac_Error(_err);")
+			OutRbrace()
 		FunctionGenerator.checkit(self) # XXX
 
-class ResFunction(ResMixIn, FunctionGenerator): pass
-class ResMethod(ResMixIn, MethodGenerator): pass
+class ResFunction(ResMixIn, OSErrFunctionGenerator): pass
+class ResMethod(ResMixIn, OSErrMethodGenerator): pass
 
 RsrcChainLocation = Type("RsrcChainLocation", "h")
 FSCatalogInfoBitmap = FakeType("0") # Type("FSCatalogInfoBitmap", "l")