Use Py_FatalError instead of abort.
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 34fbfa6..64ff320 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -326,7 +326,8 @@
 {
 #ifndef Py_USING_UNICODE
 	/* In a non-Unicode built, this should never be called. */
-	abort();
+	Py_FatalError("fp_readl should not be called in this build.");
+	return NULL;
 #else
 	PyObject* utf8;
 	PyObject* buf = tok->decoding_buffer;
@@ -403,7 +404,7 @@
 static char *
 decoding_fgets(char *s, int size, struct tok_state *tok)
 {
-	char *line;
+	char *line = NULL;
 	int warn = 0, badchar = 0;
 	for (;;) {
 		if (tok->decoding_state < 0) {
diff --git a/Python/compile.c b/Python/compile.c
index b671937..79756ea 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1186,7 +1186,8 @@
 decode_utf8(char **sPtr, char *end, char* encoding)
 {
 #ifndef Py_USING_UNICODE
-	abort();
+	Py_FatalError("decode_utf8 should not be called in this build.");
+        return NULL;
 #else
 	PyObject *u, *v;
 	char *s, *t;
@@ -1319,7 +1320,7 @@
 #ifndef Py_USING_UNICODE
 			/* This should not happen - we never see any other
 			   encoding. */
-			abort();
+			Py_FatalError("cannot deal with encodings in this build.");
 #else
 			PyObject* u = PyUnicode_DecodeUTF8(s, len, NULL);
 			if (u == NULL)