Addendum to previous change: now that 'f' is not unconditionally
initialized in the 'if (..)', do so manually.
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 986102f..48604f3 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -291,7 +291,7 @@
 	BINOP(v, w, "__or__", "__ror__", PyNumber_Or);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -311,7 +311,7 @@
 	BINOP(v, w, "__xor__", "__rxor__", PyNumber_Xor);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -331,7 +331,7 @@
 	BINOP(v, w, "__and__", "__rand__", PyNumber_And);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -351,7 +351,7 @@
 	BINOP(v, w, "__lshift__", "__rlshift__", PyNumber_Lshift);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -371,7 +371,7 @@
 	BINOP(v, w, "__rshift__", "__rrshift__", PyNumber_Rshift);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -396,7 +396,7 @@
 		return (*m->sq_concat)(v, w);
 	else if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -416,7 +416,7 @@
 	BINOP(v, w, "__sub__", "__rsub__", PyNumber_Subtract);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -447,7 +447,7 @@
 	}
 	if (tp->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -485,7 +485,7 @@
 	BINOP(v, w, "__div__", "__rdiv__", PyNumber_Divide);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -509,7 +509,7 @@
 	BINOP(v, w, "__mod__", "__rmod__", PyNumber_Remainder);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&
@@ -529,7 +529,7 @@
 	BINOP(v, w, "__divmod__", "__rdivmod__", PyNumber_Divmod);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f)(PyObject *, PyObject *);
+		PyObject * (*f)(PyObject *, PyObject *) = NULL;
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if (v->ob_type->tp_as_number != NULL &&