diff --git a/Python/errors.c b/Python/errors.c
index f7a1c08..a40f073 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -588,13 +588,16 @@
 	if (f != NULL) {
 		PyFile_WriteString("Exception ", f);
 		if (t) {
-			char* className = PyExceptionClass_Name(t);
 			PyObject* moduleName;
-			char *dot = strrchr(className, '.');
-			if (dot != NULL)
-				className = dot+1;
-			moduleName = PyObject_GetAttrString(t, "__module__");
+			char* className = PyExceptionClass_Name(t);
 
+			if (className != NULL) {
+				char *dot = strrchr(className, '.');
+				if (dot != NULL)
+					className = dot+1;
+			}
+
+			moduleName = PyObject_GetAttrString(t, "__module__");
 			if (moduleName == NULL)
 				PyFile_WriteString("<unknown>", f);
 			else {
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 6f3ff6f..3a282e7 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -663,7 +663,7 @@
 /* Parse input from a file and execute it */
 
 int
-PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, 
+PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit,
 		     PyCompilerFlags *flags)
 {
 	if (filename == NULL)
@@ -744,7 +744,7 @@
 			ps2 = PyString_AsString(w);
 	}
 	arena = PyArena_New();
-	mod = PyParser_ASTFromFile(fp, filename, 
+	mod = PyParser_ASTFromFile(fp, filename,
 				   Py_single_input, ps1, ps2,
 				   flags, &errcode, arena);
 	Py_XDECREF(v);
@@ -1132,13 +1132,15 @@
 			/* Don't do anything else */
 		}
 		else if (PyExceptionClass_Check(exception)) {
-			char* className = PyExceptionClass_Name(exception);
-			char *dot = strrchr(className, '.');
 			PyObject* moduleName;
-			if (dot != NULL)
-				className = dot+1;
-			moduleName = PyObject_GetAttrString(exception, "__module__");
+			char* className = PyExceptionClass_Name(exception);
+			if (className != NULL) {
+				char *dot = strrchr(className, '.');
+				if (dot != NULL)
+					className = dot+1;
+			}
 
+			moduleName = PyObject_GetAttrString(exception, "__module__");
 			if (moduleName == NULL)
 				err = PyFile_WriteString("<unknown>", f);
 			else {
@@ -1184,7 +1186,7 @@
 }
 
 PyObject *
-PyRun_StringFlags(const char *str, int start, PyObject *globals, 
+PyRun_StringFlags(const char *str, int start, PyObject *globals,
 		  PyObject *locals, PyCompilerFlags *flags)
 {
 	PyObject *ret = NULL;
@@ -1231,7 +1233,7 @@
 }
 
 static PyObject *
-run_pyc_file(FILE *fp, const char *filename, PyObject *globals, 
+run_pyc_file(FILE *fp, const char *filename, PyObject *globals,
 	     PyObject *locals, PyCompilerFlags *flags)
 {
 	PyCodeObject *co;
@@ -1300,13 +1302,13 @@
 
 /* Preferred access to parser is through AST. */
 mod_ty
-PyParser_ASTFromString(const char *s, const char *filename, int start, 
+PyParser_ASTFromString(const char *s, const char *filename, int start,
 		       PyCompilerFlags *flags, PyArena *arena)
 {
 	mod_ty mod;
 	perrdetail err;
 	node *n = PyParser_ParseStringFlagsFilename(s, filename,
-					&_PyParser_Grammar, start, &err, 
+					&_PyParser_Grammar, start, &err,
 					PARSER_FLAGS(flags));
 	if (n) {
 		mod = PyAST_FromNode(n, flags, filename, arena);
@@ -1320,7 +1322,7 @@
 }
 
 mod_ty
-PyParser_ASTFromFile(FILE *fp, const char *filename, int start, char *ps1, 
+PyParser_ASTFromFile(FILE *fp, const char *filename, int start, char *ps1,
 		     char *ps2, PyCompilerFlags *flags, int *errcode,
 		     PyArena *arena)
 {
@@ -1351,7 +1353,7 @@
 					  start, NULL, NULL, &err, flags);
 	if (n == NULL)
 		err_input(&err);
-		
+
 	return n;
 }
 
