When __slots__ are set to a unicode string, make it work the same as
setting a plain string, ie don't expand to single letter identifiers.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 41c0bdf..eda96a6 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -1225,13 +1225,29 @@
         raise TestFailed, "[''] slots not caught"
     class C(object):
         __slots__ = ["a", "a_b", "_a", "A0123456789Z"]
+    # XXX(nnorwitz): was there supposed to be something tested
+    # from the class above?
+
+    # Test a single string is not expanded as a sequence.
+    class C(object):
+        __slots__ = "abc"
+    c = C()
+    c.abc = 5
+    vereq(c.abc, 5)
 
     # Test unicode slot names
     try:
-        unichr
+        unicode
     except NameError:
         pass
     else:
+        # Test a single unicode string is not expanded as a sequence.
+        class C(object):
+            __slots__ = unicode("abc")
+        c = C()
+        c.abc = 5
+        vereq(c.abc, 5)
+
         # _unicode_to_string used to modify slots in certain circumstances 
         slots = (unicode("foo"), unicode("bar"))
         class C(object):
diff --git a/Misc/NEWS b/Misc/NEWS
index db0c8dc..b84d0b5 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- When __slots__ are set to a unicode string, make it work the same as 
+  setting a plain string, ie don't expand to single letter identifiers.
+
 - Request #1191699:  Slices can now be pickled.
 
 - Request #1193128:  str.translate() now allows a None argument for
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 0ce7f82..285bd67 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -1816,7 +1816,7 @@
 		/* Have slots */
 
 		/* Make it into a tuple */
-		if (PyString_Check(slots))
+		if (PyString_Check(slots) || PyUnicode_Check(slots))
 			slots = PyTuple_Pack(1, slots);
 		else
 			slots = PySequence_Tuple(slots);