diff --git a/Mac/Modules/qd/_Qdmodule.c b/Mac/Modules/qd/_Qdmodule.c
index 3bbe2c3..d66fcf2 100644
--- a/Mac/Modules/qd/_Qdmodule.c
+++ b/Mac/Modules/qd/_Qdmodule.c
@@ -122,7 +122,7 @@
 	return Py_BuildValue("lll", (long)itself->red, (long)itself->green, (long)itself->blue);
 }
 
-QdRGB_Convert(PyObject *v, RGBColorPtr p_itself)
+int QdRGB_Convert(PyObject *v, RGBColorPtr p_itself)
 {
 	long red, green, blue;
 	
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 9c177b6..0c969d7 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -167,7 +167,7 @@
 	return Py_BuildValue("lll", (long)itself->red, (long)itself->green, (long)itself->blue);
 }
 
-QdRGB_Convert(PyObject *v, RGBColorPtr p_itself)
+int QdRGB_Convert(PyObject *v, RGBColorPtr p_itself)
 {
 	long red, green, blue;
 	
diff --git a/Mac/Modules/res/_Resmodule.c b/Mac/Modules/res/_Resmodule.c
index 775e668..8640f5a 100644
--- a/Mac/Modules/res/_Resmodule.c
+++ b/Mac/Modules/res/_Resmodule.c
@@ -440,7 +440,8 @@
 		_self->ob_freeit = PyMac_AutoDisposeHandle;
 	else
 		_self->ob_freeit = NULL;
-	return Py_BuildValue("i", old);
+	_res = Py_BuildValue("i", old);
+	return _res;
 
 }
 
@@ -1378,7 +1379,8 @@
 	HLock(h);
 	memcpy(*h, buf, len);
 	HUnlock(h);
-	return ResObj_New(h);
+	_res = ResObj_New(h);
+	return _res;
 
 }
 
@@ -1403,7 +1405,8 @@
 	HUnlock(h);
 	rv = (ResourceObject *)ResObj_New(h);
 	rv->ob_freeit = PyMac_AutoDisposeHandle;
-	return (PyObject *)rv;
+	_res = (PyObject *)rv;
+	return _res;
 
 }
 
diff --git a/Mac/Modules/res/resedit.py b/Mac/Modules/res/resedit.py
index fce0bd1..c66c0c8 100644
--- a/Mac/Modules/res/resedit.py
+++ b/Mac/Modules/res/resedit.py
@@ -13,7 +13,8 @@
 HLock(h);
 memcpy(*h, buf, len);
 HUnlock(h);
-return ResObj_New(h);
+_res = ResObj_New(h);
+return _res;
 """
 
 f = ManualGenerator("Resource", resource_body)
@@ -43,7 +44,8 @@
 HUnlock(h);
 rv = (ResourceObject *)ResObj_New(h);
 rv->ob_freeit = PyMac_AutoDisposeHandle;
-return (PyObject *)rv;
+_res = (PyObject *)rv;
+return _res;
 """
 
 f = ManualGenerator("Handle", handle_body)
@@ -92,7 +94,8 @@
 	_self->ob_freeit = PyMac_AutoDisposeHandle;
 else
 	_self->ob_freeit = NULL;
-return Py_BuildValue("i", old);
+_res = Py_BuildValue("i", old);
+return _res;
 """
 f = ManualGenerator("AutoDispose", AutoDispose_body)
 f.docstring = lambda: "(int)->int. Automatically DisposeHandle the object on Python object cleanup"
diff --git a/Mac/Modules/waste/wastemodule.c b/Mac/Modules/waste/wastemodule.c
index d09641f..2c28310 100644
--- a/Mac/Modules/waste/wastemodule.c
+++ b/Mac/Modules/waste/wastemodule.c
@@ -5,8 +5,20 @@
 
 
 
+#ifdef _WIN32
+#include "pywintoolbox.h"
+#else
 #include "macglue.h"
 #include "pymactoolbox.h"
+#endif
+
+/* Macro to test whether a weak-loaded CFM function exists */
+#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
+    	PyErr_SetString(PyExc_NotImplementedError, \
+    	"Not available in this shared library/OS version"); \
+    	return NULL; \
+    }} while(0)
+
 
 #include <WASTE.h>
 #include <WEObjectHandlers.h>
@@ -213,7 +225,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-WEOObj_Convert(PyObject *v, WEObjectReference *p_itself)
+int WEOObj_Convert(PyObject *v, WEObjectReference *p_itself)
 {
 	if (!WEOObj_Check(v))
 	{
@@ -381,7 +393,7 @@
 	WESetInfo(weRefCon, (void *)&it, itself);
 	return (PyObject *)it;
 }
-wasteObj_Convert(PyObject *v, WEReference *p_itself)
+int wasteObj_Convert(PyObject *v, WEReference *p_itself)
 {
 	if (!wasteObj_Check(v))
 	{
@@ -1061,7 +1073,6 @@
 	if (_err != noErr) return PyMac_Error(_err);
 	Py_INCREF(Py_None);
 	_res = Py_None;
- pText__error__: ;
 	return _res;
 }
 
