Make sure that no use of a function pointer gotten from a
tp_as_sequence or tp_as_mapping structure is made without checking it
for NULL first.
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 73c2d85..2d11851 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -274,13 +274,15 @@
 		}
 		return res;
 	}
-	else if (!PySequence_Check(seq)) {
+
+	if (seq->ob_type->tp_as_sequence == NULL ||
+		 (getitemfunc = seq->ob_type->tp_as_sequence->sq_item) == NULL)
+	{
 		PyErr_SetString(PyExc_TypeError,
 				"first argument must be a sequence");
 		return NULL;
 	}
-	/* type safe */
-	getitemfunc = seq->ob_type->tp_as_sequence->sq_item;
+	/* This is now type safe */
 	for (i = 0; i < seqlen; i++) {
 		PyObject *item = getitemfunc(seq, i);
 		if (!item || !PyString_Check(item)) {