diff --git a/Include/object.h b/Include/object.h
index afbc68d..4ee1f8e 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -527,7 +527,9 @@
 PyAPI_DATA(int) _Py_HashSecret_Initialized;
 #endif
 
-/* Helper for passing objects to printf and the like */
+/* Helper for passing objects to printf and the like.
+   Leaks refcounts.  Don't use it!
+*/
 #define PyObject_REPR(obj) PyString_AS_STRING(PyObject_Repr(obj))
 
 /* Flag bits for printing: */
diff --git a/Python/ceval.c b/Python/ceval.c
index e008608..dad5e1c 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1957,9 +1957,13 @@
                 if (err == 0) continue;
                 break;
             }
+            t = PyObject_Repr(w);
+            if (t == NULL)
+                break;
             PyErr_Format(PyExc_SystemError,
                          "no locals found when storing %s",
-                         PyObject_REPR(w));
+                         PyString_AS_STRING(t));
+            Py_DECREF(t);
             break;
 
         case DELETE_NAME:
@@ -1971,9 +1975,13 @@
                                          w);
                 break;
             }
+            t = PyObject_Repr(w);
+            if (t == NULL)
+                break;
             PyErr_Format(PyExc_SystemError,
                          "no locals when deleting %s",
-                         PyObject_REPR(w));
+                         PyString_AS_STRING(w));
+            Py_DECREF(t);
             break;
 
         PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
@@ -2046,10 +2054,14 @@
         case LOAD_NAME:
             w = GETITEM(names, oparg);
             if ((v = f->f_locals) == NULL) {
+                why = WHY_EXCEPTION;
+                t = PyObject_Repr(w);
+                if (t == NULL)
+                    break;
                 PyErr_Format(PyExc_SystemError,
                              "no locals when loading %s",
-                             PyObject_REPR(w));
-                why = WHY_EXCEPTION;
+                             PyString_AS_STRING(w));
+                Py_DECREF(t);
                 break;
             }
             if (PyDict_CheckExact(v)) {
diff --git a/Python/compile.c b/Python/compile.c
index 1cf53f9..9d9e629 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1271,11 +1271,11 @@
                       "symbols: %s\nlocals: %s\nglobals: %s",
                       PyString_AS_STRING(name),
                       PyString_AS_STRING(c->u->u_name),
-                      PyObject_REPR(c->u->u_ste->ste_id),
+                      PyString_AS_STRING(PyObject_Repr(c->u->u_ste->ste_id)),
                       c->c_filename,
-                      PyObject_REPR(c->u->u_ste->ste_symbols),
-                      PyObject_REPR(c->u->u_varnames),
-                      PyObject_REPR(c->u->u_names)
+                      PyString_AS_STRING(PyObject_Repr(c->u->u_ste->ste_symbols)),
+                      PyString_AS_STRING(PyObject_Repr(c->u->u_varnames)),
+                      PyString_AS_STRING(PyObject_Repr(c->u->u_names))
         );
         Py_FatalError(buf);
     }
@@ -1327,11 +1327,11 @@
         if (arg == -1) {
             printf("lookup %s in %s %d %d\n"
                 "freevars of %s: %s\n",
-                PyObject_REPR(name),
+                PyString_AS_STRING(PyObject_Repr(name)),
                 PyString_AS_STRING(c->u->u_name),
                 reftype, arg,
                 PyString_AS_STRING(co->co_name),
-                PyObject_REPR(co->co_freevars));
+                PyString_AS_STRING(PyObject_Repr(co->co_freevars)));
             Py_FatalError("compiler_make_closure()");
         }
         ADDOP_I(c, LOAD_CLOSURE, arg);
