diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index e550591..e01d6cf 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -213,7 +213,8 @@
         return -1;
     }
     seq = PySequence_Tuple(val);
-    if (!seq) return -1;
+    if (!seq)
+        return -1;
     Py_CLEAR(self->args);
     self->args = seq;
     return 0;
@@ -252,7 +253,8 @@
 static PyObject *
 BaseException_get_context(PyObject *self) {
     PyObject *res = PyException_GetContext(self);
-    if (res) return res;  /* new reference already returned above */
+    if (res)
+        return res;  /* new reference already returned above */
     Py_RETURN_NONE;
 }
 
@@ -278,7 +280,8 @@
 static PyObject *
 BaseException_get_cause(PyObject *self) {
     PyObject *res = PyException_GetCause(self);
-    if (res) return res;  /* new reference already returned above */
+    if (res)
+        return res;  /* new reference already returned above */
     Py_RETURN_NONE;
 }
 
@@ -672,7 +675,8 @@
      * file name given to EnvironmentError. */
     if (PyTuple_GET_SIZE(args) == 2 && self->filename) {
         args = PyTuple_New(3);
-        if (!args) return NULL;
+        if (!args)
+            return NULL;
 
         tmp = PyTuple_GET_ITEM(self->args, 0);
         Py_INCREF(tmp);
@@ -894,7 +898,8 @@
     if (lenargs == 2) {
         info = PyTuple_GET_ITEM(args, 1);
         info = PySequence_Tuple(info);
-        if (!info) return -1;
+        if (!info)
+            return -1;
 
         if (PyTuple_GET_SIZE(info) != 4) {
             /* not a very good error message, but it's what Python 2.4 gives */
