Merged revisions 79645 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r79645 | benjamin.peterson | 2010-04-02 20:40:24 -0500 (Fri, 02 Apr 2010) | 13 lines

  Merged revisions 79642,79644 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r79642 | benjamin.peterson | 2010-04-02 20:08:34 -0500 (Fri, 02 Apr 2010) | 1 line

    split out large test function
  ........
    r79644 | benjamin.peterson | 2010-04-02 20:28:57 -0500 (Fri, 02 Apr 2010) | 1 line

    give TypeError when trying to set T_STRING_INPLACE
  ........
................
diff --git a/Python/structmember.c b/Python/structmember.c
index 8edc354..711cfe5 100644
--- a/Python/structmember.c
+++ b/Python/structmember.c
@@ -106,7 +106,7 @@
 
 	addr += l->offset;
 
-	if ((l->flags & READONLY) || l->type == T_STRING)
+	if ((l->flags & READONLY))
 	{
 		PyErr_SetString(PyExc_AttributeError, "readonly attribute");
 		return -1;
@@ -265,6 +265,10 @@
 		*(char*)addr = string[0];
 		break;
 		}
+	case T_STRING:
+        case T_STRING_INPLACE:
+		PyErr_SetString(PyExc_TypeError, "readonly attribute");
+		return -1;
 #ifdef HAVE_LONG_LONG
 	case T_LONGLONG:{
 		PY_LONG_LONG value;