diff --git a/Modules/_sre.c b/Modules/_sre.c
index 2ab1703..5beb3ea 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -1127,7 +1127,7 @@
 	if (!code)
 		return NULL;
 
-    n = PySequence_Length(code);
+    n = PySequence_Size(code);
 
 	self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, 100*n);
 	if (!self) {
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 6be3e04..8fb321e 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -1934,7 +1934,7 @@
 	if (!PyArg_ParseTuple(args, "O:_flatten", &item))
 		return NULL;
 
-	context.maxsize = PySequence_Length(item);
+	context.maxsize = PySequence_Size(item);
 	if (context.maxsize <= 0)
 		return PyTuple_New(0);
 	
diff --git a/Modules/almodule.c b/Modules/almodule.c
index d9dfc81..84a9895 100644
--- a/Modules/almodule.c
+++ b/Modules/almodule.c
@@ -176,13 +176,13 @@
 		case AL_INT32_ELEM:
 		case AL_RESOURCE_ELEM:
 		case AL_ENUM_ELEM:
-			param->sizeIn = PySequence_Length(value);
+			param->sizeIn = PySequence_Size(value);
 			param->value.ptr = PyMem_NEW(int, param->sizeIn);
 			stepsize = sizeof(int);
 			break;
 		case AL_INT64_ELEM:
 		case AL_FIXED_ELEM:
-			param->sizeIn = PySequence_Length(value);
+			param->sizeIn = PySequence_Size(value);
 			param->value.ptr = PyMem_NEW(long long, param->sizeIn);
 			stepsize = sizeof(long long);
 			break;
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index f9ef78f..52b3a1f 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -1466,7 +1466,7 @@
             PyObject_CallObject(getinitargs_func, empty_tuple))
             goto finally;
 
-        if ((len = PyObject_Length(class_args)) < 0)  
+        if ((len = PyObject_Size(class_args)) < 0)  
             goto finally;
 
         for (i = 0; i < len; i++) {
@@ -2874,7 +2874,7 @@
   if (PyClass_Check(cls)) {
       int l;
       
-      if ((l=PyObject_Length(args)) < 0) goto err;
+      if ((l=PyObject_Size(args)) < 0) goto err;
       UNLESS (l) {
           PyObject *__getinitargs__;
 
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 4c187fe..321e79b 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -367,7 +367,7 @@
     Py_DECREF(string_module);
   }
 
-  if (PyObject_Length(args) == -1) {
+  if (PyObject_Size(args) == -1) {
     return NULL;
   }
 
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index feea8da..27203c3 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -610,7 +610,7 @@
      *  so we can DECREF it after the check.  But we really should accept
      *  lists as well as tuples at the very least.
      */
-    ok = PyObject_Length(tuple) >= 2;
+    ok = PyObject_Size(tuple) >= 2;
     if (ok) {
         temp = PySequence_GetItem(tuple, 0);
         ok = (temp != NULL) && PyInt_Check(temp);
@@ -626,7 +626,7 @@
     }
     if (ok) {
         temp = PySequence_GetItem(tuple, 1);
-        ok = (temp != NULL) && PyObject_Length(temp) >= 2;
+        ok = (temp != NULL) && PyObject_Size(temp) >= 2;
         if (ok) {
             PyObject *temp2 = PySequence_GetItem(temp, 0);
             if (temp2 != NULL) {
@@ -693,7 +693,7 @@
 static int
 check_terminal_tuple(PyObject *elem)
 {
-    int   len = PyObject_Length(elem);
+    int   len = PyObject_Size(elem);
     int   res = 1;
     char* str = "Illegal terminal symbol; bad node length.";
 
@@ -731,7 +731,7 @@
 static node*
 build_node_children(PyObject *tuple, node *root, int *line_num)
 {
-    int len = PyObject_Length(tuple);
+    int len = PyObject_Size(tuple);
     int i;
 
     for (i = 1; i < len; ++i) {
@@ -771,7 +771,7 @@
                     (void) strcpy(strn, PyString_AS_STRING(temp));
                 Py_DECREF(temp);
 
-                if (PyObject_Length(elem) == 3) {
+                if (PyObject_Size(elem) == 3) {
                     PyObject* temp = PySequence_GetItem(elem, 2);
                     *line_num = PyInt_AsLong(temp);
                     Py_DECREF(temp);
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index c0b30f9..d879837 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1417,7 +1417,7 @@
 	}
 	argvlist[argc] = NULL;
 
-	i = PyMapping_Length(env);
+	i = PyMapping_Size(env);
 	envlist = PyMem_NEW(char *, i + 1);
 	if (envlist == NULL) {
 		PyErr_NoMemory();
@@ -1610,7 +1610,7 @@
 	}
 	argvlist[argc] = NULL;
 
-	i = PyMapping_Length(env);
+	i = PyMapping_Size(env);
 	envlist = PyMem_NEW(char *, i + 1);
 	if (envlist == NULL) {
 		PyErr_NoMemory();
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 35674de..612d0d3 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -190,7 +190,7 @@
 		seplen = 1;
 	}
 
-	seqlen = PySequence_Length(seq);
+	seqlen = PySequence_Size(seq);
 	if (seqlen < 0 && PyErr_Occurred())
 		return NULL;
 
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 9c49dad..e85e2f4 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -563,7 +563,7 @@
 	if (!b)
 		return NULL;
 
-	if (PyObject_Length(b) == 0)
+	if (PyObject_Size(b) == 0)
 		/* short circuit when b is empty */
 		goto ok;
 
@@ -585,7 +585,7 @@
 		}
 	}
 
-	blen = PyObject_Length(b);
+	blen = PyObject_Size(b);
 
 	/* resize a using idiom */
 	items = self->ob_item;
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index f4b90e8..ab44e91 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -759,7 +759,7 @@
 	/* From here on out, errors go through finally: for proper
 	 * reference count manipulations.
 	 */
-	seqlen = PySequence_Length(seq);
+	seqlen = PySequence_Size(seq);
 	if (seqlen == 1) {
 		item = PySequence_Fast_GET_ITEM(seq, 0);
 		Py_INCREF(item);
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index f10b800..02d1b0d 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -2650,7 +2650,7 @@
     int sz = 100;
     int i;
 
-    seqlen = PySequence_Length(seq);
+    seqlen = PySequence_Size(seq);
     if (seqlen < 0 && PyErr_Occurred())
 	return NULL;
 
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index a00cd5d..0746282 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1385,7 +1385,7 @@
 
 	if (!PyArg_ParseTuple(args, "O:len", &v))
 		return NULL;
-	res = PyObject_Length(v);
+	res = PyObject_Size(v);
 	if (res < 0 && PyErr_Occurred())
 		return NULL;
 	return PyInt_FromLong(res);
diff --git a/Python/exceptions.c b/Python/exceptions.c
index c0e4d54..05e318e 100644
--- a/Python/exceptions.c
+++ b/Python/exceptions.c
@@ -224,7 +224,8 @@
 	return NULL;
 
     /* set args attribute */
-    args = PySequence_GetSlice(args, 1, PySequence_Length(args));
+    /* XXX size is only a hint */
+    args = PySequence_GetSlice(args, 1, PySequence_Size(args));
     if (!args)
         return NULL;
     status = PyObject_SetAttrString(self, "args", args);
@@ -249,7 +250,7 @@
     if (!args)
         return NULL;
 
-    switch (PySequence_Length(args)) {
+    switch (PySequence_Size(args)) {
     case 0:
         out = PyString_FromString("");
         break;
@@ -374,7 +375,7 @@
 	return NULL;
 
     /* Set args attribute. */
-    if (!(args = PySequence_GetSlice(args, 1, PySequence_Length(args))))
+    if (!(args = PySequence_GetSlice(args, 1, PySequence_Size(args))))
         return NULL;
     
     status = PyObject_SetAttrString(self, "args", args);
@@ -384,7 +385,7 @@
     }
 
     /* set code attribute */
-    switch (PySequence_Length(args)) {
+    switch (PySequence_Size(args)) {
     case 0:
         Py_INCREF(Py_None);
         code = Py_None;
@@ -441,7 +442,7 @@
     if (!(self = get_self(args)))
 	return NULL;
 
-    if (!(args = PySequence_GetSlice(args, 1, PySequence_Length(args))))
+    if (!(args = PySequence_GetSlice(args, 1, PySequence_Size(args))))
 	return NULL;
 
     if (PyObject_SetAttrString(self, "args", args) ||
@@ -452,7 +453,7 @@
 	goto finally;
     }
 
-    switch (PySequence_Length(args)) {
+    switch (PySequence_Size(args)) {
     case 3:
 	/* Where a function has a single filename, such as open() or some
 	 * of the os module functions, PyErr_SetFromErrnoWithFilename() is
@@ -671,13 +672,13 @@
     if (!(self = get_self(args)))
 	return NULL;
 
-    if (!(args = PySequence_GetSlice(args, 1, PySequence_Length(args))))
+    if (!(args = PySequence_GetSlice(args, 1, PySequence_Size(args))))
 	return NULL;
 
     if (PyObject_SetAttrString(self, "args", args))
 	goto finally;
 
-    lenargs = PySequence_Length(args);
+    lenargs = PySequence_Size(args);
     if (lenargs >= 1) {
 	PyObject* item0 = PySequence_GetItem(args, 0);
 	int status;
diff --git a/Python/getargs.c b/Python/getargs.c
index ba855af..11754ef 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -348,7 +348,7 @@
 		return msgbuf;
 	}
 	
-	if ((i = PySequence_Length(arg)) != n) {
+	if ((i = PySequence_Size(arg)) != n) {
 		levels[0] = 0;
 		sprintf(msgbuf,
 		    toplevel ? "%d arguments, %d" : "%d-sequence, %d-sequence",
