Generators had their throw() method allowing string exceptions.  That's a
no-no.

Fixes issue #1147.  Need to fix 2.5 to raise a proper warning if a string
exception is passed in.
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index 2b0d47d..5d50187 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -1622,7 +1622,7 @@
 >>> f().throw("abc")     # throw on just-opened generator
 Traceback (most recent call last):
   ...
-abc
+TypeError: exceptions must be classes, or instances, not str
 
 Now let's try closing a generator:
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 10f2c71..e5e365a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- Issue #1147: Exceptions were directly allowing string exceptions in their
+  throw() method even though string exceptions no longer allowed.
+
 - Issue #1096: Prevent a segfault from getting the repr of a very deeply nested
   list by using the recursion counter.
 
diff --git a/Objects/genobject.c b/Objects/genobject.c
index 14cc46b..551d9fd 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -252,10 +252,7 @@
 			Py_INCREF(typ);
 		}
 	}
-
-	/* Allow raising builtin string exceptions */
-
-	else if (!PyString_CheckExact(typ)) {
+	else {
 		/* Not something you can raise.  throw() fails. */
 		PyErr_Format(PyExc_TypeError,
 			     "exceptions must be classes, or instances, not %s",