Fred's right -- we need PyList_SET_ITEM().
diff --git a/Doc/api.tex b/Doc/api.tex
index 5f168f2..b0b7bfd 100644
--- a/Doc/api.tex
+++ b/Doc/api.tex
@@ -1953,6 +1953,11 @@
 Macro form of \cfunction{PyList_GetItem()} without error checking.
 \end{cfuncdesc}
 
+\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
+                                              PyObject *o}
+Macro form of \cfunction{PyList_SetItem()} without error checking.
+\end{cfuncdesc}
+
 \begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
 Macro form of \cfunction{PyList_GetSize()} without error checking.
 \end{cfuncdesc}
diff --git a/Doc/api/api.tex b/Doc/api/api.tex
index 5f168f2..b0b7bfd 100644
--- a/Doc/api/api.tex
+++ b/Doc/api/api.tex
@@ -1953,6 +1953,11 @@
 Macro form of \cfunction{PyList_GetItem()} without error checking.
 \end{cfuncdesc}
 
+\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
+                                              PyObject *o}
+Macro form of \cfunction{PyList_SetItem()} without error checking.
+\end{cfuncdesc}
+
 \begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
 Macro form of \cfunction{PyList_GetSize()} without error checking.
 \end{cfuncdesc}
diff --git a/Include/listobject.h b/Include/listobject.h
index c1bbcc1..e99acef 100644
--- a/Include/listobject.h
+++ b/Include/listobject.h
@@ -74,6 +74,7 @@
 
 /* Macro, trading safety for speed */
 #define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i])
+#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v))
 #define PyList_GET_SIZE(op)    (((PyListObject *)(op))->ob_size)
 
 #ifdef __cplusplus
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 8a4215b..fd31405 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1282,7 +1282,7 @@
 			Py_DECREF(v);
 			return NULL;
 		}
-		PyList_GET_ITEM(v, i) = w;
+		PyList_SET_ITEM(v, i, w);
 		ilow += istep;
 	}
 	return v;