diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 3e1e8e2..06d2dc4 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -301,8 +301,9 @@
 			insertdict(mp,ep->me_key,ep->me_hash,ep->me_value);
 	}
 	for (i = 0, ep = oldtable; i < oldsize; i++, ep++) {
-		if (ep->me_value == NULL)
+		if (ep->me_value == NULL) {
 			Py_XDECREF(ep->me_key);
+		}
 	}
 
 	PyMem_XDEL(oldtable);
@@ -483,10 +484,12 @@
 	register int i;
 	register dictentry *ep;
 	for (i = 0, ep = mp->ma_table; i < mp->ma_size; i++, ep++) {
-		if (ep->me_key != NULL)
+		if (ep->me_key != NULL) {
 			Py_DECREF(ep->me_key);
-		if (ep->me_value != NULL)
+		}
+		if (ep->me_value != NULL) {
 			Py_DECREF(ep->me_value);
+		}
 	}
 	PyMem_XDEL(mp->ma_table);
 	PyMem_DEL(mp);
@@ -501,20 +504,34 @@
 	register int i;
 	register int any;
 	register dictentry *ep;
+
+	i = Py_ReprEnter((PyObject*)mp);
+	if (i != 0) {
+		if (i < 0)
+			return i;
+		fprintf(fp, "{...}");
+		return 0;
+	}
+
 	fprintf(fp, "{");
 	any = 0;
 	for (i = 0, ep = mp->ma_table; i < mp->ma_size; i++, ep++) {
 		if (ep->me_value != NULL) {
 			if (any++ > 0)
 				fprintf(fp, ", ");
-			if (PyObject_Print((PyObject *)ep->me_key, fp, 0) != 0)
+			if (PyObject_Print((PyObject *)ep->me_key, fp, 0)!=0) {
+				Py_ReprLeave((PyObject*)mp);
 				return -1;
+			}
 			fprintf(fp, ": ");
-			if (PyObject_Print(ep->me_value, fp, 0) != 0)
+			if (PyObject_Print(ep->me_value, fp, 0) != 0) {
+				Py_ReprLeave((PyObject*)mp);
 				return -1;
+			}
 		}
 	}
 	fprintf(fp, "}");
+	Py_ReprLeave((PyObject*)mp);
 	return 0;
 }
 
@@ -527,6 +544,14 @@
 	register int i;
 	register int any;
 	register dictentry *ep;
+
+	i = Py_ReprEnter((PyObject*)mp);
+	if (i != 0) {
+		if (i > 0)
+			return PyString_FromString("{...}");
+		return NULL;
+	}
+
 	v = PyString_FromString("{");
 	sepa = PyString_FromString(", ");
 	colon = PyString_FromString(": ");
@@ -541,6 +566,7 @@
 		}
 	}
 	PyString_ConcatAndDel(&v, PyString_FromString("}"));
+	Py_ReprLeave((PyObject*)mp);
 	Py_XDECREF(sepa);
 	Py_XDECREF(colon);
 	return v;
