Fix str() and repr() of empty sets.
diff --git a/Objects/setobject.c b/Objects/setobject.c
index b4b58b7..05549e6 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -529,10 +529,17 @@
 	Py_ssize_t pos=0;
 	char *emit = "";	/* No separator emitted on first pass */
 	char *separator = ", ";
+	int literalform = 0;
 
-	if (so->ob_type == &PySet_Type)
+	if (!so->used) {
+		fprintf(fp, "%s()", so->ob_type->tp_name);
+		return 0;
+	}
+
+	if (so->ob_type == &PySet_Type) {
+		literalform = 1;
 		fprintf(fp, "{");
-	else
+	} else
 		fprintf(fp, "%s([", so->ob_type->tp_name);
 	while (set_next(so, &pos, &entry)) {
 		fputs(emit, fp);
@@ -540,7 +547,7 @@
 		if (PyObject_Print(entry->key, fp, 0) != 0)
 			return -1;
 	}
-	if (so->ob_type == &PySet_Type)
+	if (literalform)
 		fputs("}", fp);
 	else
 		fputs("])", fp);
@@ -552,6 +559,10 @@
 {
 	PyObject *keys, *result, *listrepr;
 
+	/* shortcut for the empty set */
+	if (!so->used)
+		return PyString_FromFormat("%s()", so->ob_type->tp_name);
+
 	keys = PySequence_List((PyObject *)so);
 	if (keys == NULL)
 		return NULL;
@@ -567,7 +578,7 @@
 		result = PyString_FromFormat("{%s}", s);
 	} else {
 		result = PyString_FromFormat("%s(%s)", so->ob_type->tp_name,
-			 PyString_AS_STRING(listrepr));
+			 	PyString_AS_STRING(listrepr));
 	}
 	Py_DECREF(listrepr);
 	return result;