diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c
index 6f4da7e..aa4a161 100644
--- a/Modules/_bsddb.c
+++ b/Modules/_bsddb.c
@@ -5034,6 +5034,8 @@
 
     /* Create the module and add the functions */
     m = Py_InitModule(_bsddbModuleName, bsddb_methods);
+    if (m == NULL)
+    	return;
 
     /* Add some symbolic constants to the module */
     d = PyModule_GetDict(m);
diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c
index b5f30cb..c3f313a 100644
--- a/Modules/_curses_panel.c
+++ b/Modules/_curses_panel.c
@@ -462,6 +462,8 @@
 
     /* Create the module and add the functions */
     m = Py_InitModule("_curses_panel", PyCurses_methods);
+    if (m == NULL)
+    	return;
     d = PyModule_GetDict(m);
 
     /* For exception _curses_panel.error */
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 176f024..4c03602 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -2481,6 +2481,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule("_curses", PyCurses_methods);
+	if (m == NULL)
+    		return;
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index 641f272..ea5aa6c 100644
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -2590,6 +2590,8 @@
 #endif
 
     m = Py_InitModule("_elementtree", _functions);
+    if (m == NULL)
+    	return;
 
     /* python glue code */
 
diff --git a/Modules/_heapqmodule.c b/Modules/_heapqmodule.c
index 5a78c45..999647e 100644
--- a/Modules/_heapqmodule.c
+++ b/Modules/_heapqmodule.c
@@ -610,6 +610,8 @@
 	PyObject *m;
 
 	m = Py_InitModule3("_heapq", heapq_methods, module_doc);
+	if (m == NULL)
+    		return;
 	PyModule_AddObject(m, "__about__", PyString_FromString(__about__));
 }
 
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index bd57c2f..2d84d80 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -715,6 +715,8 @@
 #endif
 
     m = Py_InitModule("_locale", PyLocale_Methods);
+    if (m == NULL)
+    	return;
 
     d = PyModule_GetDict(m);
 
diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c
index 8fe2b2b..bd1c9d3 100644
--- a/Modules/_randommodule.c
+++ b/Modules/_randommodule.c
@@ -573,6 +573,8 @@
 	if (PyType_Ready(&Random_Type) < 0)
 		return;
 	m = Py_InitModule3("_random", NULL, module_doc);
+	if (m == NULL)
+		return;
 	Py_INCREF(&Random_Type);
 	PyModule_AddObject(m, "Random", (PyObject *)&Random_Type);
 }
diff --git a/Modules/_sre.c b/Modules/_sre.c
index 1f0a8bc..4d9d1cd 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -3389,6 +3389,8 @@
         Scanner_Type.ob_type = &PyType_Type;
 
     m = Py_InitModule("_" SRE_MODULE, _functions);
+    if (m == NULL)
+    	return;
     d = PyModule_GetDict(m);
 
     x = PyInt_FromLong(SRE_MAGIC);
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 9c100ab..fd5e2c6 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -634,6 +634,8 @@
 	PySSL_Type.ob_type = &PyType_Type;
 
 	m = Py_InitModule3("_ssl", PySSL_methods, module_doc);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 
 	/* Load _socket module and its C API */
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 9a5d885..c008b87 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -627,6 +627,8 @@
 	PyObject *m;
 
 	m = Py_InitModule("_testcapi", TestMethods);
+	if (m == NULL)
+		return;
 
 	PyModule_AddObject(m, "UCHAR_MAX", PyInt_FromLong(UCHAR_MAX));
 	PyModule_AddObject(m, "USHRT_MAX", PyInt_FromLong(USHRT_MAX));
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index c3015b9..70cd670 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -3088,6 +3088,8 @@
 #endif
 
 	m = Py_InitModule("_tkinter", moduleMethods);
+	if (m == NULL)
+		return;
 
 	d = PyModule_GetDict(m);
 	Tkinter_TclError = PyErr_NewException("_tkinter.TclError", NULL, NULL);
diff --git a/Modules/almodule.c b/Modules/almodule.c
index 12b265e..5254fca 100644
--- a/Modules/almodule.c
+++ b/Modules/almodule.c
@@ -1996,6 +1996,8 @@
 	m = Py_InitModule4("al", al_methods,
 		al_module_documentation,
 		(PyObject*)NULL,PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 3c60350..4c7cdf2 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -2118,6 +2118,8 @@
 	Arraytype.ob_type = &PyType_Type;
 	PyArrayIter_Type.ob_type = &PyType_Type;
 	m = Py_InitModule3("array", a_methods, module_doc);
+	if (m == NULL)
+		return;
 
         Py_INCREF((PyObject *)&Arraytype);
 	PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype);
diff --git a/Modules/audioop.c b/Modules/audioop.c
index 52824b8..8d5a305 100644
--- a/Modules/audioop.c
+++ b/Modules/audioop.c
@@ -1374,6 +1374,8 @@
 {
 	PyObject *m, *d;
 	m = Py_InitModule("audioop", audioop_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	AudioopError = PyErr_NewException("audioop.error", NULL, NULL);
 	if (AudioopError != NULL)
diff --git a/Modules/binascii.c b/Modules/binascii.c
index eab90b3..4a2c268 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -1335,6 +1335,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule("binascii", binascii_module_methods);
+	if (m == NULL)
+		return;
 
 	d = PyModule_GetDict(m);
 	x = PyString_FromString(doc_binascii);
diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c
index ac8c443..6bdffde 100644
--- a/Modules/bsddbmodule.c
+++ b/Modules/bsddbmodule.c
@@ -849,6 +849,8 @@
 
 	Bsddbtype.ob_type = &PyType_Type;
 	m = Py_InitModule("bsddb185", bsddbmodule_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	BsddbError = PyErr_NewException("bsddb.error", NULL, NULL);
 	if (BsddbError != NULL)
diff --git a/Modules/bz2module.c b/Modules/bz2module.c
index 82b3958..9f30f8a 100644
--- a/Modules/bz2module.c
+++ b/Modules/bz2module.c
@@ -2192,6 +2192,8 @@
 	BZ2Decomp_Type.ob_type = &PyType_Type;
 
 	m = Py_InitModule3("bz2", bz2_methods, bz2__doc__);
+	if (m == NULL)
+		return;
 
 	PyModule_AddObject(m, "__author__", PyString_FromString(__author__));
 
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index 865541f..cc821fd 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -5730,6 +5730,8 @@
 	m = Py_InitModule4("cPickle", cPickle_methods,
 			   cPickle_module_documentation,
 			   (PyObject*)NULL,PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 0d50459..ad2f36b 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -716,6 +716,7 @@
   m = Py_InitModule4("cStringIO", IO_methods,
 		     cStringIO_module_documentation,
 		     (PyObject*)NULL,PYTHON_API_VERSION);
+  if (m == NULL) return;
 
   /* Add some symbolic constants to the module */
   d = PyModule_GetDict(m);
diff --git a/Modules/cdmodule.c b/Modules/cdmodule.c
index 25add3e..f8efd39 100644
--- a/Modules/cdmodule.c
+++ b/Modules/cdmodule.c
@@ -760,6 +760,8 @@
 	PyObject *m, *d;
 
 	m = Py_InitModule("cd", CD_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 
 	CdError = PyErr_NewException("cd.error", NULL, NULL);
diff --git a/Modules/clmodule.c b/Modules/clmodule.c
index 70e8f8e..a535e03 100644
--- a/Modules/clmodule.c
+++ b/Modules/clmodule.c
@@ -963,6 +963,8 @@
 	PyObject *m, *d, *x;
 
 	m = Py_InitModule("cl", cl_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 
 	ClError = PyErr_NewException("cl.error", NULL, NULL);
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index 78b9dd5..ec48ce8 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -417,6 +417,8 @@
 	PyObject *m;
 
 	m = Py_InitModule3("cmath", cmath_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	PyModule_AddObject(m, "pi",
                            PyFloat_FromDouble(atan(1.0) * 4.0));
diff --git a/Modules/collectionsmodule.c b/Modules/collectionsmodule.c
index 1a8258e..16f25df 100644
--- a/Modules/collectionsmodule.c
+++ b/Modules/collectionsmodule.c
@@ -1077,6 +1077,8 @@
 	PyObject *m;
 
 	m = Py_InitModule3("collections", NULL, module_doc);
+	if (m == NULL)
+		return;
 
 	if (PyType_Ready(&deque_type) < 0)
 		return;
diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c
index 8a6fae2..50f47d4 100644
--- a/Modules/datetimemodule.c
+++ b/Modules/datetimemodule.c
@@ -4615,6 +4615,8 @@
 
 	m = Py_InitModule3("datetime", module_methods,
 			   "Fast implementation of the datetime type.");
+	if (m == NULL)
+		return;
 
 	if (PyType_Ready(&PyDateTime_DateType) < 0)
 		return;
diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 40d06fc..cc963a2 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -359,6 +359,8 @@
 
 	Dbmtype.ob_type = &PyType_Type;
 	m = Py_InitModule("dbm", dbmmodule_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	if (DbmError == NULL)
 		DbmError = PyErr_NewException("dbm.error", NULL, NULL);
diff --git a/Modules/dlmodule.c b/Modules/dlmodule.c
index 927f4c0..0955681 100644
--- a/Modules/dlmodule.c
+++ b/Modules/dlmodule.c
@@ -219,6 +219,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule("dl", dl_methods);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Modules/errnomodule.c b/Modules/errnomodule.c
index e9c0990..696d396 100644
--- a/Modules/errnomodule.c
+++ b/Modules/errnomodule.c
@@ -57,6 +57,8 @@
 {
 	PyObject *m, *d, *de;
 	m = Py_InitModule3("errno", errno_methods, errno__doc__);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	de = PyDict_New();
 	if (!d || !de || PyDict_SetItemString(d, "errorcode", de) < 0)
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index 624019d..4197339 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -583,6 +583,8 @@
 
 	/* Create the module and add the functions and documentation */
 	m = Py_InitModule3("fcntl", fcntl_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Modules/flmodule.c b/Modules/flmodule.c
index 1ae2dc8..aa0d04e 100644
--- a/Modules/flmodule.c
+++ b/Modules/flmodule.c
@@ -2130,6 +2130,8 @@
 initfl(void)
 {
 	Py_InitModule("fl", forms_methods);
+	if (m == NULL)
+		return;
 	foreground();
 	fl_init();
 }
diff --git a/Modules/fmmodule.c b/Modules/fmmodule.c
index 78a5877..0175390 100644
--- a/Modules/fmmodule.c
+++ b/Modules/fmmodule.c
@@ -258,5 +258,7 @@
 initfm(void)
 {
 	Py_InitModule("fm", fm_methods);
+	if (m == NULL)
+		return;
 	fminit();
 }
diff --git a/Modules/fpectlmodule.c b/Modules/fpectlmodule.c
index 241c1c2..c6d4f77 100644
--- a/Modules/fpectlmodule.c
+++ b/Modules/fpectlmodule.c
@@ -265,6 +265,8 @@
 {
     PyObject *m, *d;
     m = Py_InitModule("fpectl", fpectl_methods);
+    if (m == NULL)
+    	return;
     d = PyModule_GetDict(m);
     fpe_error = PyErr_NewException("fpectl.error", NULL, NULL);
     if (fpe_error != NULL)
diff --git a/Modules/fpetestmodule.c b/Modules/fpetestmodule.c
index aa14dd8..22e95db 100644
--- a/Modules/fpetestmodule.c
+++ b/Modules/fpetestmodule.c
@@ -177,6 +177,8 @@
     PyObject *m, *d;
 
     m = Py_InitModule("fpetest", fpetest_methods);
+    if (m == NULL)
+    	return;
     d = PyModule_GetDict(m);
     fpe_error = PyErr_NewException("fpetest.error", NULL, NULL);
     if (fpe_error != NULL)
diff --git a/Modules/functionalmodule.c b/Modules/functionalmodule.c
index 95ffd5d..58b07d9 100644
--- a/Modules/functionalmodule.c
+++ b/Modules/functionalmodule.c
@@ -263,6 +263,8 @@
 	};
 
 	m = Py_InitModule3("functional", module_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	for (i=0 ; typelist[i] != NULL ; i++) {
 		if (PyType_Ready(typelist[i]) < 0)
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index db9dd32..00239bd 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -1158,6 +1158,8 @@
 			      gc__doc__,
 			      NULL,
 			      PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	if (garbage == NULL) {
 		garbage = PyList_New(0);
diff --git a/Modules/gdbmmodule.c b/Modules/gdbmmodule.c
index 03e664d..6045743 100644
--- a/Modules/gdbmmodule.c
+++ b/Modules/gdbmmodule.c
@@ -512,6 +512,8 @@
     m = Py_InitModule4("gdbm", dbmmodule_methods,
                        gdbmmodule__doc__, (PyObject *)NULL,
                        PYTHON_API_VERSION);
+    if (m == NULL)
+	return;
     d = PyModule_GetDict(m);
     DbmError = PyErr_NewException("gdbm.error", NULL, NULL);
     if (DbmError != NULL) {
diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c
index 5f33fe9..de849c9 100644
--- a/Modules/grpmodule.c
+++ b/Modules/grpmodule.c
@@ -171,6 +171,8 @@
 {
     PyObject *m, *d;
     m = Py_InitModule3("grp", grp_methods, grp__doc__);
+    if (m == NULL)
+        return;
     d = PyModule_GetDict(m);
     PyStructSequence_InitType(&StructGrpType, &struct_group_type_desc);
     PyDict_SetItemString(d, "struct_group", (PyObject *) &StructGrpType);
diff --git a/Modules/imageop.c b/Modules/imageop.c
index 5b87898..92f805a 100644
--- a/Modules/imageop.c
+++ b/Modules/imageop.c
@@ -776,6 +776,8 @@
 {
 	PyObject *m;
 	m = Py_InitModule("imageop", imageop_methods);
+	if (m == NULL)
+		return;
 	ImageopDict = PyModule_GetDict(m);
 	ImageopError = PyErr_NewException("imageop.error", NULL, NULL);
 	if (ImageopError != NULL)
diff --git a/Modules/imgfile.c b/Modules/imgfile.c
index f9fa25b..bb85a78 100644
--- a/Modules/imgfile.c
+++ b/Modules/imgfile.c
@@ -492,6 +492,8 @@
 {
 	PyObject *m, *d;
 	m = Py_InitModule("imgfile", imgfile_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	ImgfileError = PyErr_NewException("imgfile.error", NULL, NULL);
 	if (ImgfileError != NULL)
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c
index c675bf4..a7ecf93 100644
--- a/Modules/itertoolsmodule.c
+++ b/Modules/itertoolsmodule.c
@@ -2460,6 +2460,8 @@
 
 	teedataobject_type.ob_type = &PyType_Type;
 	m = Py_InitModule3("itertools", module_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	for (i=0 ; typelist[i] != NULL ; i++) {
 		if (PyType_Ready(typelist[i]) < 0)
diff --git a/Modules/linuxaudiodev.c b/Modules/linuxaudiodev.c
index a5ff367..f6d5b7d 100644
--- a/Modules/linuxaudiodev.c
+++ b/Modules/linuxaudiodev.c
@@ -491,6 +491,8 @@
     PyObject *m;
   
     m = Py_InitModule("linuxaudiodev", linuxaudiodev_methods);
+    if (m == NULL)
+	return;
 
     LinuxAudioError = PyErr_NewException("linuxaudiodev.error", NULL, NULL);
     if (LinuxAudioError)
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index a5fec15..e7fc6dd 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -355,6 +355,8 @@
 	PyObject *m, *d, *v;
 
 	m = Py_InitModule3("math", math_methods, module_doc);
+	if (m == NULL)
+		goto finally;
 	d = PyModule_GetDict(m);
 
         if (!(v = PyFloat_FromDouble(atan(1.0) * 4.0)))
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 9c647c5..e12bef8 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -303,6 +303,8 @@
         if (PyType_Ready(&MD5type) < 0)
             return;
 	m = Py_InitModule3("_md5", md5_functions, module_doc);
+	if (m == NULL)
+	    return;
 	d = PyModule_GetDict(m);
 	PyDict_SetItemString(d, "MD5Type", (PyObject *)&MD5type);
 	PyModule_AddIntConstant(m, "digest_size", 16);
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index 2ff4494..1cd7d17 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -1092,6 +1092,8 @@
 	mmap_object_type.ob_type = &PyType_Type;
 
 	module = Py_InitModule ("mmap", mmap_functions);
+	if (module == NULL)
+		return;
 	dict = PyModule_GetDict (module);
 	mmap_module_error = PyExc_EnvironmentError;
 	Py_INCREF(mmap_module_error);
diff --git a/Modules/nismodule.c b/Modules/nismodule.c
index 2494adb..207f7b8 100644
--- a/Modules/nismodule.c
+++ b/Modules/nismodule.c
@@ -379,6 +379,8 @@
 {
 	PyObject *m, *d;
 	m = Py_InitModule("nis", nis_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	NisError = PyErr_NewException("nis.error", NULL, NULL);
 	if (NisError != NULL)
diff --git a/Modules/operator.c b/Modules/operator.c
index ddd0252..4817d33 100644
--- a/Modules/operator.c
+++ b/Modules/operator.c
@@ -578,6 +578,8 @@
 	/* Create the module and add the functions */
         m = Py_InitModule4("operator", operator_methods, operator_doc,
 		       (PyObject*)NULL, PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	if (PyType_Ready(&itemgetter_type) < 0)
 		return;
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c
index af3002d..4c22b07 100644
--- a/Modules/ossaudiodev.c
+++ b/Modules/ossaudiodev.c
@@ -963,6 +963,8 @@
     PyObject *m;
 
     m = Py_InitModule("ossaudiodev", ossaudiodev_methods);
+    if (m == NULL)
+	return;
 
     OSSAudioError = PyErr_NewException("ossaudiodev.OSSAudioError",
 				       NULL, NULL);
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index e788fc9..b2b32df 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -3148,6 +3148,8 @@
 
     PyST_Type.ob_type = &PyType_Type;
     module = Py_InitModule("parser", parser_functions);
+    if (module == NULL)
+    	return;
 
     if (parser_error == 0)
         parser_error = PyErr_NewException("parser.ParserError", NULL, NULL);
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index b783573..100dfcf 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -7967,6 +7967,8 @@
 	m = Py_InitModule3(MODNAME,
 			   posix_methods,
 			   posix__doc__);
+	if (m == NULL)
+    		return;
 
 	/* Initialize environ dictionary */
 	v = convertenviron();
diff --git a/Modules/puremodule.c b/Modules/puremodule.c
index 43c6441..95f4bde 100644
--- a/Modules/puremodule.c
+++ b/Modules/puremodule.c
@@ -952,6 +952,8 @@
 	PyObject *m, *d;
 
 	m = Py_InitModule("pure", pure_methods);
+	if (m == NULL)
+    		return;
 	d = PyModule_GetDict(m);
 
         /* this is bogus because we should be able to find this information
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index f418e43..9e7b864 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -183,6 +183,8 @@
 {
 	PyObject *m;
 	m = Py_InitModule3("pwd", pwd_methods, pwd__doc__);
+	if (m == NULL)
+    		return;
 
 	PyStructSequence_InitType(&StructPwdType, &struct_pwd_type_desc);
 	Py_INCREF((PyObject *) &StructPwdType);
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index c827581..76b7cf9 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -1854,6 +1854,8 @@
     /* Create the module and add the functions */
     m = Py_InitModule3(MODULE_NAME, pyexpat_methods,
                        pyexpat_module_documentation);
+    if (m == NULL)
+	return;
 
     /* Add some symbolic constants to the module */
     if (ErrorObject == NULL) {
diff --git a/Modules/readline.c b/Modules/readline.c
index f039f1a..8fda228 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -925,6 +925,8 @@
 
 	m = Py_InitModule4("readline", readline_methods, doc_module,
 			   (PyObject *)NULL, PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	PyOS_ReadlineFunctionPointer = call_readline;
 	setup_readline();
diff --git a/Modules/regexmodule.c b/Modules/regexmodule.c
index 9f84032..d449932 100644
--- a/Modules/regexmodule.c
+++ b/Modules/regexmodule.c
@@ -653,6 +653,8 @@
 	Regextype.ob_type = &PyType_Type;
 
 	m = Py_InitModule("regex", regex_global_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 
 	if (PyErr_Warn(PyExc_DeprecationWarning,
diff --git a/Modules/resource.c b/Modules/resource.c
index c5bec79..7cbd2c9 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -234,6 +234,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule("resource", resource_methods);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	if (ResourceError == NULL) {
diff --git a/Modules/rgbimgmodule.c b/Modules/rgbimgmodule.c
index 904c64b..8c70d95 100644
--- a/Modules/rgbimgmodule.c
+++ b/Modules/rgbimgmodule.c
@@ -756,6 +756,8 @@
 {
 	PyObject *m, *d;
 	m = Py_InitModule("rgbimg", rgbimg_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	ImgfileError = PyErr_NewException("rgbimg.error", NULL, NULL);
 	if (ImgfileError != NULL)
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index ed2ea81..53c68c1 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -662,6 +662,8 @@
 {
 	PyObject *m;
 	m = Py_InitModule3("select", select_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	SelectError = PyErr_NewException("select.error", NULL, NULL);
 	Py_INCREF(SelectError);
diff --git a/Modules/sha256module.c b/Modules/sha256module.c
index b40bb70..e16338d 100644
--- a/Modules/sha256module.c
+++ b/Modules/sha256module.c
@@ -706,4 +706,6 @@
     if (PyType_Ready(&SHA256type) < 0)
         return;
     m = Py_InitModule("_sha256", SHA_functions);
+    if (m == NULL)
+	return;
 }
diff --git a/Modules/sha512module.c b/Modules/sha512module.c
index 44ed7a7..3837795 100644
--- a/Modules/sha512module.c
+++ b/Modules/sha512module.c
@@ -772,6 +772,8 @@
     if (PyType_Ready(&SHA512type) < 0)
         return;
     m = Py_InitModule("_sha512", SHA_functions);
+    if (m == NULL)
+	return;
 }
 
 #endif
diff --git a/Modules/shamodule.c b/Modules/shamodule.c
index 1de61c4..058391d 100644
--- a/Modules/shamodule.c
+++ b/Modules/shamodule.c
@@ -590,6 +590,8 @@
     if (PyType_Ready(&SHAtype) < 0)
         return;
     m = Py_InitModule("_sha", SHA_functions);
+    if (m == NULL)
+	return;
 
     /* Add some symbolic constants to the module */
     insint("blocksize", 1);  /* For future use, in case some hash
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index bec2729..a729604 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -317,6 +317,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule3("signal", signal_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index b88703c..cdefc58 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -3871,6 +3871,8 @@
 	m = Py_InitModule3(PySocket_MODULE_NAME,
 			   socket_methods,
 			   socket_doc);
+	if (m == NULL)
+		return;
 
 	socket_error = PyErr_NewException("socket.error", NULL, NULL);
 	if (socket_error == NULL)
diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c
index 36dd228..7c618e7 100644
--- a/Modules/spwdmodule.c
+++ b/Modules/spwdmodule.c
@@ -171,6 +171,8 @@
 {
 	PyObject *m;
 	m=Py_InitModule3("spwd", spwd_methods, spwd__doc__);
+	if (m == NULL)
+		return;
 	PyStructSequence_InitType(&StructSpwdType, &struct_spwd_type_desc);
 	Py_INCREF((PyObject *) &StructSpwdType);
 	PyModule_AddObject(m, "struct_spwd", (PyObject *) &StructSpwdType);
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index ed72a71..2917298 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -1210,6 +1210,8 @@
 	int c, n;
 	m = Py_InitModule4("strop", strop_methods, strop_module__doc__,
 			   (PyObject*)NULL, PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	/* Create 'whitespace' object */
 	n = 0;
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index 137b898..f07f21a 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -1278,6 +1278,8 @@
 	/* Create the module and add the functions */
 	m = Py_InitModule4("struct", struct_methods, struct__doc__,
 			   (PyObject*)NULL, PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	if (StructError == NULL) {
diff --git a/Modules/sunaudiodev.c b/Modules/sunaudiodev.c
index 3269c76..802184d 100644
--- a/Modules/sunaudiodev.c
+++ b/Modules/sunaudiodev.c
@@ -456,6 +456,8 @@
 	PyObject *m, *d;
 
 	m = Py_InitModule("sunaudiodev", sunaudiodev_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	SunAudioError = PyErr_NewException("sunaudiodev.error", NULL, NULL);
 	if (SunAudioError)
diff --git a/Modules/svmodule.c b/Modules/svmodule.c
index 9bd7968..fb58f19 100644
--- a/Modules/svmodule.c
+++ b/Modules/svmodule.c
@@ -956,6 +956,8 @@
 	PyObject *m, *d;
 
 	m = Py_InitModule("sv", sv_methods);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 
 	SvError = PyErr_NewException("sv.error", NULL, NULL);
diff --git a/Modules/symtablemodule.c b/Modules/symtablemodule.c
index 7a52aae..c90d765 100644
--- a/Modules/symtablemodule.c
+++ b/Modules/symtablemodule.c
@@ -53,6 +53,8 @@
 	PyObject *m;
 
 	m = Py_InitModule("_symtable", symtable_methods);
+	if (m == NULL)
+		return;
 	PyModule_AddIntConstant(m, "USE", USE);
 	PyModule_AddIntConstant(m, "DEF_GLOBAL", DEF_GLOBAL);
 	PyModule_AddIntConstant(m, "DEF_LOCAL", DEF_LOCAL);
diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
index 1f2b874..dd35923 100644
--- a/Modules/syslogmodule.c
+++ b/Modules/syslogmodule.c
@@ -163,6 +163,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule("syslog", syslog_methods);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 
diff --git a/Modules/termios.c b/Modules/termios.c
index a1d14a1..c53566c 100644
--- a/Modules/termios.c
+++ b/Modules/termios.c
@@ -910,6 +910,8 @@
 
 	m = Py_InitModule4("termios", termios_methods, termios__doc__,
                            (PyObject *)NULL, PYTHON_API_VERSION);
+	if (m == NULL)
+		return;
 
 	if (TermiosError == NULL) {
 		TermiosError = PyErr_NewException("termios.error", NULL, NULL);
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c
index 3025595..fccdd62 100644
--- a/Modules/threadmodule.c
+++ b/Modules/threadmodule.c
@@ -638,6 +638,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule3("thread", thread_methods, thread_doc);
+	if (m == NULL)
+		return;
 
 	/* Add a symbolic constant */
 	d = PyModule_GetDict(m);
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 2cd9a57..ba93957 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -785,6 +785,8 @@
 	PyObject *m;
 	char *p;
 	m = Py_InitModule3("time", time_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	/* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
 	p = Py_GETENV("PYTHONY2K");
diff --git a/Modules/xxmodule.c b/Modules/xxmodule.c
index 5f75b6c..ea66eef 100644
--- a/Modules/xxmodule.c
+++ b/Modules/xxmodule.c
@@ -352,6 +352,8 @@
 
 	/* Create the module and add the functions */
 	m = Py_InitModule3("xx", xx_methods, module_doc);
+	if (m == NULL)
+		return;
 
 	/* Add some symbolic constants to the module */
 	if (ErrorObject == NULL) {
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index a598ae3..725755d 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -878,6 +878,8 @@
     m = Py_InitModule4("zlib", zlib_methods,
 		       zlib_module_documentation,
 		       (PyObject*)NULL,PYTHON_API_VERSION);
+    if (m == NULL)
+	return;
 
     ZlibError = PyErr_NewException("zlib.error", NULL, NULL);
     if (ZlibError != NULL) {
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
index 8ed4899..b675b88 100644
--- a/PC/_subprocess.c
+++ b/PC/_subprocess.c
@@ -553,6 +553,8 @@
 	sp_handle_as_number.nb_int = (unaryfunc) sp_handle_as_int;
 
 	m = Py_InitModule("_subprocess", sp_functions);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 
 	/* constants */
diff --git a/PC/_winreg.c b/PC/_winreg.c
index 34e4f68..965acf1 100644
--- a/PC/_winreg.c
+++ b/PC/_winreg.c
@@ -1459,6 +1459,8 @@
 {
 	PyObject *m, *d;
 	m = Py_InitModule3("_winreg", winreg_methods, module_doc);
+	if (m == NULL)
+		return;
 	d = PyModule_GetDict(m);
 	PyHKEY_Type.ob_type = &PyType_Type;
 	PyHKEY_Type.tp_doc = PyHKEY_doc;
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index 84cf0c1..4453023 100755
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -221,6 +221,8 @@
 initmsvcrt(void)
 {
 	PyObject *m = Py_InitModule("msvcrt", msvcrt_functions);
+	if (m == NULL)
+		return;
 	PyObject *d = PyModule_GetDict(m);
 
 	/* constants for the locking() function's mode argument */
diff --git a/PC/winsound.c b/PC/winsound.c
index b94b322..81e3917 100644
--- a/PC/winsound.c
+++ b/PC/winsound.c
@@ -220,6 +220,8 @@
 	PyObject *module = Py_InitModule3("winsound",
 					  sound_methods,
 					  sound_module_doc);
+	if (module == NULL)
+		return;
 	PyObject *dict = PyModule_GetDict(module);
 
 	ADD_DEFINE(SND_ASYNC);
diff --git a/Python/import.c b/Python/import.c
index f284ff4..8bd25f7 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2817,6 +2817,8 @@
 
 	m = Py_InitModule4("imp", imp_methods, doc_imp,
 			   NULL, PYTHON_API_VERSION);
+	if (m == NULL)
+		goto failure;
 	d = PyModule_GetDict(m);
 
 	if (setint(d, "SEARCH_ERROR", SEARCH_ERROR) < 0) goto failure;
diff --git a/Python/marshal.c b/Python/marshal.c
index ff8247c..5617226 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -1107,5 +1107,7 @@
 PyMarshal_Init(void)
 {
 	PyObject *mod = Py_InitModule("marshal", marshal_methods);
+	if (mod == NULL)
+		return;
 	PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION);
 }
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 5bbe950..f793b99 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1027,6 +1027,8 @@
 #endif
 
 	m = Py_InitModule3("sys", sys_methods, sys_doc);
+	if (m == NULL)
+		return NULL;
 	sysdict = PyModule_GetDict(m);
 
 	{
