Use continue instead of break whereever possible.
diff --git a/Python/ceval.c b/Python/ceval.c
index 9ea2772..49582dc 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1646,7 +1646,7 @@
 					Py_DECREF(v);
 				}
 			}
-			break;
+			continue;
 
 		case END_FINALLY:
 			v = POP();
@@ -1689,6 +1689,7 @@
 			if ((x = f->f_locals) != NULL) {
 				err = PyDict_SetItem(x, w, v);
 				Py_DECREF(v);
+				if (err == 0) continue;
 				break;
 			}
 			PyErr_Format(PyExc_SystemError,
@@ -1719,6 +1720,8 @@
 					Py_INCREF(w);
 					PUSH(w);
 				}
+				Py_DECREF(v);
+				continue;
 			} else if (PyList_CheckExact(v) && PyList_GET_SIZE(v) == oparg) {
 				PyObject **items = ((PyListObject *)v)->ob_item;
 				while (oparg--) {
@@ -1746,6 +1749,7 @@
 			err = PyObject_SetAttr(v, w, u); /* v.w = u */
 			Py_DECREF(v);
 			Py_DECREF(u);
+			if (err == 0) continue;
 			break;
 
 		case DELETE_ATTR:
@@ -1761,6 +1765,7 @@
 			v = POP();
 			err = PyDict_SetItem(f->f_globals, w, v);
 			Py_DECREF(v);
+			if (err == 0) continue;
 			break;
 
 		case DELETE_GLOBAL:
@@ -1835,7 +1840,7 @@
 			}
 			Py_INCREF(x);
 			PUSH(x);
-			break;
+			continue;
 
 		case DELETE_FAST:
 			x = GETLOCAL(oparg);
@@ -1854,6 +1859,7 @@
 			x = freevars[oparg];
 			Py_INCREF(x);
 			PUSH(x);
+			if (x != NULL) continue;
 			break;
 
 		case LOAD_DEREF: