Recorded merge of revisions 81029 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines

  Untabify C files. Will watch buildbots.
........
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 9c30a14..2729a77 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -11,7 +11,7 @@
 #include <stddef.h>
 #else /* !STDC_HEADERS */
 #ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>		/* For size_t */
+#include <sys/types.h>          /* For size_t */
 #endif /* HAVE_SYS_TYPES_H */
 #endif /* !STDC_HEADERS */
 
@@ -22,22 +22,22 @@
  * functions aren't visible yet.
  */
 struct arraydescr {
-	int typecode;
-	int itemsize;
-	PyObject * (*getitem)(struct arrayobject *, Py_ssize_t);
-	int (*setitem)(struct arrayobject *, Py_ssize_t, PyObject *);
-        char *formats;
-	int is_integer_type;
-	int is_signed;
+    int typecode;
+    int itemsize;
+    PyObject * (*getitem)(struct arrayobject *, Py_ssize_t);
+    int (*setitem)(struct arrayobject *, Py_ssize_t, PyObject *);
+    char *formats;
+    int is_integer_type;
+    int is_signed;
 };
 
 typedef struct arrayobject {
-	PyObject_VAR_HEAD
-	char *ob_item;
-	Py_ssize_t allocated;
-	struct arraydescr *ob_descr;
-	PyObject *weakreflist; /* List of weak references */
-        int ob_exports;  /* Number of exported buffers */
+    PyObject_VAR_HEAD
+    char *ob_item;
+    Py_ssize_t allocated;
+    struct arraydescr *ob_descr;
+    PyObject *weakreflist; /* List of weak references */
+    int ob_exports;  /* Number of exported buffers */
 } arrayobject;
 
 static PyTypeObject Arraytype;
@@ -48,63 +48,63 @@
 static int
 array_resize(arrayobject *self, Py_ssize_t newsize)
 {
-	char *items;
-	size_t _new_size;
+    char *items;
+    size_t _new_size;
 
-	if (self->ob_exports > 0 && newsize != Py_SIZE(self)) {
-		PyErr_SetString(PyExc_BufferError, 
-			"cannot resize an array that is exporting buffers");
-		return -1;
-	}
+    if (self->ob_exports > 0 && newsize != Py_SIZE(self)) {
+        PyErr_SetString(PyExc_BufferError,
+            "cannot resize an array that is exporting buffers");
+        return -1;
+    }
 
-	/* Bypass realloc() when a previous overallocation is large enough
-	   to accommodate the newsize.  If the newsize is 16 smaller than the
-	   current size, then proceed with the realloc() to shrink the array.
-	*/
+    /* Bypass realloc() when a previous overallocation is large enough
+       to accommodate the newsize.  If the newsize is 16 smaller than the
+       current size, then proceed with the realloc() to shrink the array.
+    */
 
-	if (self->allocated >= newsize &&
-	    Py_SIZE(self) < newsize + 16 &&
-	    self->ob_item != NULL) {
-		Py_SIZE(self) = newsize;
-		return 0;
-	}
+    if (self->allocated >= newsize &&
+        Py_SIZE(self) < newsize + 16 &&
+        self->ob_item != NULL) {
+        Py_SIZE(self) = newsize;
+        return 0;
+    }
 
-	if (newsize == 0) {
-		PyMem_FREE(self->ob_item);
-		self->ob_item = NULL;
-		Py_SIZE(self) = 0;
-		self->allocated = 0;
-		return 0;
-	}
+    if (newsize == 0) {
+        PyMem_FREE(self->ob_item);
+        self->ob_item = NULL;
+        Py_SIZE(self) = 0;
+        self->allocated = 0;
+        return 0;
+    }
 
-	/* This over-allocates proportional to the array size, making room
-	 * for additional growth.  The over-allocation is mild, but is
-	 * enough to give linear-time amortized behavior over a long
-	 * sequence of appends() in the presence of a poorly-performing
-	 * system realloc().
-	 * The growth pattern is:  0, 4, 8, 16, 25, 34, 46, 56, 67, 79, ...
-	 * Note, the pattern starts out the same as for lists but then
-	 * grows at a smaller rate so that larger arrays only overallocate
-	 * by about 1/16th -- this is done because arrays are presumed to be more
-	 * memory critical.
-	 */
+    /* This over-allocates proportional to the array size, making room
+     * for additional growth.  The over-allocation is mild, but is
+     * enough to give linear-time amortized behavior over a long
+     * sequence of appends() in the presence of a poorly-performing
+     * system realloc().
+     * The growth pattern is:  0, 4, 8, 16, 25, 34, 46, 56, 67, 79, ...
+     * Note, the pattern starts out the same as for lists but then
+     * grows at a smaller rate so that larger arrays only overallocate
+     * by about 1/16th -- this is done because arrays are presumed to be more
+     * memory critical.
+     */
 
-	_new_size = (newsize >> 4) + (Py_SIZE(self) < 8 ? 3 : 7) + newsize;
-	items = self->ob_item;
-	/* XXX The following multiplication and division does not optimize away 
-	   like it does for lists since the size is not known at compile time */
-	if (_new_size <= ((~(size_t)0) / self->ob_descr->itemsize))
-		PyMem_RESIZE(items, char, (_new_size * self->ob_descr->itemsize));
-	else
-		items = NULL;
-	if (items == NULL) {
-		PyErr_NoMemory();
-		return -1;
-	}
-	self->ob_item = items;
-	Py_SIZE(self) = newsize;
-	self->allocated = _new_size;
-	return 0;
+    _new_size = (newsize >> 4) + (Py_SIZE(self) < 8 ? 3 : 7) + newsize;
+    items = self->ob_item;
+    /* XXX The following multiplication and division does not optimize away
+       like it does for lists since the size is not known at compile time */
+    if (_new_size <= ((~(size_t)0) / self->ob_descr->itemsize))
+        PyMem_RESIZE(items, char, (_new_size * self->ob_descr->itemsize));
+    else
+        items = NULL;
+    if (items == NULL) {
+        PyErr_NoMemory();
+        return -1;
+    }
+    self->ob_item = items;
+    Py_SIZE(self) = newsize;
+    self->allocated = _new_size;
+    return 0;
 }
 
 /****************************************************************************
@@ -122,272 +122,272 @@
 static PyObject *
 b_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	long x = ((char *)ap->ob_item)[i];
-	if (x >= 128)
-		x -= 256;
-	return PyLong_FromLong(x);
+    long x = ((char *)ap->ob_item)[i];
+    if (x >= 128)
+        x -= 256;
+    return PyLong_FromLong(x);
 }
 
 static int
 b_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	short x;
-	/* PyArg_Parse's 'b' formatter is for an unsigned char, therefore
-	   must use the next size up that is signed ('h') and manually do
-	   the overflow checking */
-	if (!PyArg_Parse(v, "h;array item must be integer", &x))
-		return -1;
-	else if (x < -128) {
-		PyErr_SetString(PyExc_OverflowError,
-			"signed char is less than minimum");
-		return -1;
-	}
-	else if (x > 127) {
-		PyErr_SetString(PyExc_OverflowError,
-			"signed char is greater than maximum");
-		return -1;
-	}
-	if (i >= 0)
-		((char *)ap->ob_item)[i] = (char)x;
-	return 0;
+    short x;
+    /* PyArg_Parse's 'b' formatter is for an unsigned char, therefore
+       must use the next size up that is signed ('h') and manually do
+       the overflow checking */
+    if (!PyArg_Parse(v, "h;array item must be integer", &x))
+        return -1;
+    else if (x < -128) {
+        PyErr_SetString(PyExc_OverflowError,
+            "signed char is less than minimum");
+        return -1;
+    }
+    else if (x > 127) {
+        PyErr_SetString(PyExc_OverflowError,
+            "signed char is greater than maximum");
+        return -1;
+    }
+    if (i >= 0)
+        ((char *)ap->ob_item)[i] = (char)x;
+    return 0;
 }
 
 static PyObject *
 BB_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	long x = ((unsigned char *)ap->ob_item)[i];
-	return PyLong_FromLong(x);
+    long x = ((unsigned char *)ap->ob_item)[i];
+    return PyLong_FromLong(x);
 }
 
 static int
 BB_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	unsigned char x;
-	/* 'B' == unsigned char, maps to PyArg_Parse's 'b' formatter */
-	if (!PyArg_Parse(v, "b;array item must be integer", &x))
-		return -1;
-	if (i >= 0)
-		((char *)ap->ob_item)[i] = x;
-	return 0;
+    unsigned char x;
+    /* 'B' == unsigned char, maps to PyArg_Parse's 'b' formatter */
+    if (!PyArg_Parse(v, "b;array item must be integer", &x))
+        return -1;
+    if (i >= 0)
+        ((char *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 static PyObject *
 u_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyUnicode_FromUnicode(&((Py_UNICODE *) ap->ob_item)[i], 1);
+    return PyUnicode_FromUnicode(&((Py_UNICODE *) ap->ob_item)[i], 1);
 }
 
 static int
 u_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	Py_UNICODE *p;
-	Py_ssize_t len;
+    Py_UNICODE *p;
+    Py_ssize_t len;
 
-	if (!PyArg_Parse(v, "u#;array item must be unicode character", &p, &len))
-		return -1;
-	if (len != 1) {
-		PyErr_SetString(PyExc_TypeError,
-				"array item must be unicode character");
-		return -1;
-	}
-	if (i >= 0)
-		((Py_UNICODE *)ap->ob_item)[i] = p[0];
-	return 0;
+    if (!PyArg_Parse(v, "u#;array item must be unicode character", &p, &len))
+        return -1;
+    if (len != 1) {
+        PyErr_SetString(PyExc_TypeError,
+                        "array item must be unicode character");
+        return -1;
+    }
+    if (i >= 0)
+        ((Py_UNICODE *)ap->ob_item)[i] = p[0];
+    return 0;
 }
 
 
 static PyObject *
 h_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyLong_FromLong((long) ((short *)ap->ob_item)[i]);
+    return PyLong_FromLong((long) ((short *)ap->ob_item)[i]);
 }
 
 
 static int
 h_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	short x;
-	/* 'h' == signed short, maps to PyArg_Parse's 'h' formatter */
-	if (!PyArg_Parse(v, "h;array item must be integer", &x))
-		return -1;
-	if (i >= 0)
-		     ((short *)ap->ob_item)[i] = x;
-	return 0;
+    short x;
+    /* 'h' == signed short, maps to PyArg_Parse's 'h' formatter */
+    if (!PyArg_Parse(v, "h;array item must be integer", &x))
+        return -1;
+    if (i >= 0)
+                 ((short *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 static PyObject *
 HH_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyLong_FromLong((long) ((unsigned short *)ap->ob_item)[i]);
+    return PyLong_FromLong((long) ((unsigned short *)ap->ob_item)[i]);
 }
 
 static int
 HH_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	int x;
-	/* PyArg_Parse's 'h' formatter is for a signed short, therefore
-	   must use the next size up and manually do the overflow checking */
-	if (!PyArg_Parse(v, "i;array item must be integer", &x))
-		return -1;
-	else if (x < 0) {
-		PyErr_SetString(PyExc_OverflowError,
-			"unsigned short is less than minimum");
-		return -1;
-	}
-	else if (x > USHRT_MAX) {
-		PyErr_SetString(PyExc_OverflowError,
-			"unsigned short is greater than maximum");
-		return -1;
-	}
-	if (i >= 0)
-		((short *)ap->ob_item)[i] = (short)x;
-	return 0;
+    int x;
+    /* PyArg_Parse's 'h' formatter is for a signed short, therefore
+       must use the next size up and manually do the overflow checking */
+    if (!PyArg_Parse(v, "i;array item must be integer", &x))
+        return -1;
+    else if (x < 0) {
+        PyErr_SetString(PyExc_OverflowError,
+            "unsigned short is less than minimum");
+        return -1;
+    }
+    else if (x > USHRT_MAX) {
+        PyErr_SetString(PyExc_OverflowError,
+            "unsigned short is greater than maximum");
+        return -1;
+    }
+    if (i >= 0)
+        ((short *)ap->ob_item)[i] = (short)x;
+    return 0;
 }
 
 static PyObject *
 i_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyLong_FromLong((long) ((int *)ap->ob_item)[i]);
+    return PyLong_FromLong((long) ((int *)ap->ob_item)[i]);
 }
 
 static int
 i_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	int x;
-	/* 'i' == signed int, maps to PyArg_Parse's 'i' formatter */
-	if (!PyArg_Parse(v, "i;array item must be integer", &x))
-		return -1;
-	if (i >= 0)
-		     ((int *)ap->ob_item)[i] = x;
-	return 0;
+    int x;
+    /* 'i' == signed int, maps to PyArg_Parse's 'i' formatter */
+    if (!PyArg_Parse(v, "i;array item must be integer", &x))
+        return -1;
+    if (i >= 0)
+                 ((int *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 static PyObject *
 II_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyLong_FromUnsignedLong(
-		(unsigned long) ((unsigned int *)ap->ob_item)[i]);
+    return PyLong_FromUnsignedLong(
+        (unsigned long) ((unsigned int *)ap->ob_item)[i]);
 }
 
 static int
 II_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	unsigned long x;
-	if (PyLong_Check(v)) {
-		x = PyLong_AsUnsignedLong(v);
-		if (x == (unsigned long) -1 && PyErr_Occurred())
-			return -1;
-	}
-	else {
-		long y;
-		if (!PyArg_Parse(v, "l;array item must be integer", &y))
-			return -1;
-		if (y < 0) {
-			PyErr_SetString(PyExc_OverflowError,
-				"unsigned int is less than minimum");
-			return -1;
-		}
-		x = (unsigned long)y;
+    unsigned long x;
+    if (PyLong_Check(v)) {
+        x = PyLong_AsUnsignedLong(v);
+        if (x == (unsigned long) -1 && PyErr_Occurred())
+            return -1;
+    }
+    else {
+        long y;
+        if (!PyArg_Parse(v, "l;array item must be integer", &y))
+            return -1;
+        if (y < 0) {
+            PyErr_SetString(PyExc_OverflowError,
+                "unsigned int is less than minimum");
+            return -1;
+        }
+        x = (unsigned long)y;
 
-	}
-	if (x > UINT_MAX) {
-		PyErr_SetString(PyExc_OverflowError,
-			"unsigned int is greater than maximum");
-		return -1;
-	}
+    }
+    if (x > UINT_MAX) {
+        PyErr_SetString(PyExc_OverflowError,
+            "unsigned int is greater than maximum");
+        return -1;
+    }
 
-	if (i >= 0)
-		((unsigned int *)ap->ob_item)[i] = (unsigned int)x;
-	return 0;
+    if (i >= 0)
+        ((unsigned int *)ap->ob_item)[i] = (unsigned int)x;
+    return 0;
 }
 
 static PyObject *
 l_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyLong_FromLong(((long *)ap->ob_item)[i]);
+    return PyLong_FromLong(((long *)ap->ob_item)[i]);
 }
 
 static int
 l_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	long x;
-	if (!PyArg_Parse(v, "l;array item must be integer", &x))
-		return -1;
-	if (i >= 0)
-		     ((long *)ap->ob_item)[i] = x;
-	return 0;
+    long x;
+    if (!PyArg_Parse(v, "l;array item must be integer", &x))
+        return -1;
+    if (i >= 0)
+                 ((long *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 static PyObject *
 LL_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyLong_FromUnsignedLong(((unsigned long *)ap->ob_item)[i]);
+    return PyLong_FromUnsignedLong(((unsigned long *)ap->ob_item)[i]);
 }
 
 static int
 LL_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	unsigned long x;
-	if (PyLong_Check(v)) {
-		x = PyLong_AsUnsignedLong(v);
-		if (x == (unsigned long) -1 && PyErr_Occurred())
-			return -1;
-	}
-	else {
-		long y;
-		if (!PyArg_Parse(v, "l;array item must be integer", &y))
-			return -1;
-		if (y < 0) {
-			PyErr_SetString(PyExc_OverflowError,
-				"unsigned long is less than minimum");
-			return -1;
-		}
-		x = (unsigned long)y;
+    unsigned long x;
+    if (PyLong_Check(v)) {
+        x = PyLong_AsUnsignedLong(v);
+        if (x == (unsigned long) -1 && PyErr_Occurred())
+            return -1;
+    }
+    else {
+        long y;
+        if (!PyArg_Parse(v, "l;array item must be integer", &y))
+            return -1;
+        if (y < 0) {
+            PyErr_SetString(PyExc_OverflowError,
+                "unsigned long is less than minimum");
+            return -1;
+        }
+        x = (unsigned long)y;
 
-	}
-	if (x > ULONG_MAX) {
-		PyErr_SetString(PyExc_OverflowError,
-			"unsigned long is greater than maximum");
-		return -1;
-	}
+    }
+    if (x > ULONG_MAX) {
+        PyErr_SetString(PyExc_OverflowError,
+            "unsigned long is greater than maximum");
+        return -1;
+    }
 
-	if (i >= 0)
-		((unsigned long *)ap->ob_item)[i] = x;
-	return 0;
+    if (i >= 0)
+        ((unsigned long *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 static PyObject *
 f_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyFloat_FromDouble((double) ((float *)ap->ob_item)[i]);
+    return PyFloat_FromDouble((double) ((float *)ap->ob_item)[i]);
 }
 
 static int
 f_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	float x;
-	if (!PyArg_Parse(v, "f;array item must be float", &x))
-		return -1;
-	if (i >= 0)
-		     ((float *)ap->ob_item)[i] = x;
-	return 0;
+    float x;
+    if (!PyArg_Parse(v, "f;array item must be float", &x))
+        return -1;
+    if (i >= 0)
+                 ((float *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 static PyObject *
 d_getitem(arrayobject *ap, Py_ssize_t i)
 {
-	return PyFloat_FromDouble(((double *)ap->ob_item)[i]);
+    return PyFloat_FromDouble(((double *)ap->ob_item)[i]);
 }
 
 static int
 d_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
 {
-	double x;
-	if (!PyArg_Parse(v, "d;array item must be float", &x))
-		return -1;
-	if (i >= 0)
-		     ((double *)ap->ob_item)[i] = x;
-	return 0;
+    double x;
+    if (!PyArg_Parse(v, "d;array item must be float", &x))
+        return -1;
+    if (i >= 0)
+                 ((double *)ap->ob_item)[i] = x;
+    return 0;
 }
 
 
@@ -397,18 +397,18 @@
  * typecode.
  */
 static struct arraydescr descriptors[] = {
-	{'b', 1, b_getitem, b_setitem, "b", 1, 1},
-	{'B', 1, BB_getitem, BB_setitem, "B", 1, 0},
-	{'u', sizeof(Py_UNICODE), u_getitem, u_setitem, "u", 0, 0},
-	{'h', sizeof(short), h_getitem, h_setitem, "h", 1, 1},
-	{'H', sizeof(short), HH_getitem, HH_setitem, "H", 1, 0},
-	{'i', sizeof(int), i_getitem, i_setitem, "i", 1, 1},
-	{'I', sizeof(int), II_getitem, II_setitem, "I", 1, 0},
-	{'l', sizeof(long), l_getitem, l_setitem, "l", 1, 1},
-	{'L', sizeof(long), LL_getitem, LL_setitem, "L", 1, 0},
-	{'f', sizeof(float), f_getitem, f_setitem, "f", 0, 0},
-	{'d', sizeof(double), d_getitem, d_setitem, "d", 0, 0},
-	{'\0', 0, 0, 0, 0, 0, 0} /* Sentinel */
+    {'b', 1, b_getitem, b_setitem, "b", 1, 1},
+    {'B', 1, BB_getitem, BB_setitem, "B", 1, 0},
+    {'u', sizeof(Py_UNICODE), u_getitem, u_setitem, "u", 0, 0},
+    {'h', sizeof(short), h_getitem, h_setitem, "h", 1, 1},
+    {'H', sizeof(short), HH_getitem, HH_setitem, "H", 1, 0},
+    {'i', sizeof(int), i_getitem, i_setitem, "i", 1, 1},
+    {'I', sizeof(int), II_getitem, II_setitem, "I", 1, 0},
+    {'l', sizeof(long), l_getitem, l_setitem, "l", 1, 1},
+    {'L', sizeof(long), LL_getitem, LL_setitem, "L", 1, 0},
+    {'f', sizeof(float), f_getitem, f_setitem, "f", 0, 0},
+    {'d', sizeof(double), d_getitem, d_setitem, "d", 0, 0},
+    {'\0', 0, 0, 0, 0, 0, 0} /* Sentinel */
 };
 
 /****************************************************************************
@@ -418,79 +418,79 @@
 static PyObject *
 newarrayobject(PyTypeObject *type, Py_ssize_t size, struct arraydescr *descr)
 {
-	arrayobject *op;
-	size_t nbytes;
+    arrayobject *op;
+    size_t nbytes;
 
-	if (size < 0) {
-		PyErr_BadInternalCall();
-		return NULL;
-	}
+    if (size < 0) {
+        PyErr_BadInternalCall();
+        return NULL;
+    }
 
-	nbytes = size * descr->itemsize;
-	/* Check for overflow */
-	if (nbytes / descr->itemsize != (size_t)size) {
-		return PyErr_NoMemory();
-	}
-	op = (arrayobject *) type->tp_alloc(type, 0);
-	if (op == NULL) {
-		return NULL;
-	}
-	op->ob_descr = descr;
-	op->allocated = size;
-	op->weakreflist = NULL;
-	Py_SIZE(op) = size;
-	if (size <= 0) {
-		op->ob_item = NULL;
-	}
-	else {
-		op->ob_item = PyMem_NEW(char, nbytes);
-		if (op->ob_item == NULL) {
-			Py_DECREF(op);
-			return PyErr_NoMemory();
-		}
-	}
-        op->ob_exports = 0;
-	return (PyObject *) op;
+    nbytes = size * descr->itemsize;
+    /* Check for overflow */
+    if (nbytes / descr->itemsize != (size_t)size) {
+        return PyErr_NoMemory();
+    }
+    op = (arrayobject *) type->tp_alloc(type, 0);
+    if (op == NULL) {
+        return NULL;
+    }
+    op->ob_descr = descr;
+    op->allocated = size;
+    op->weakreflist = NULL;
+    Py_SIZE(op) = size;
+    if (size <= 0) {
+        op->ob_item = NULL;
+    }
+    else {
+        op->ob_item = PyMem_NEW(char, nbytes);
+        if (op->ob_item == NULL) {
+            Py_DECREF(op);
+            return PyErr_NoMemory();
+        }
+    }
+    op->ob_exports = 0;
+    return (PyObject *) op;
 }
 
 static PyObject *
 getarrayitem(PyObject *op, Py_ssize_t i)
 {
-	register arrayobject *ap;
-	assert(array_Check(op));
-	ap = (arrayobject *)op;
-	assert(i>=0 && i<Py_SIZE(ap));
-	return (*ap->ob_descr->getitem)(ap, i);
+    register arrayobject *ap;
+    assert(array_Check(op));
+    ap = (arrayobject *)op;
+    assert(i>=0 && i<Py_SIZE(ap));
+    return (*ap->ob_descr->getitem)(ap, i);
 }
 
 static int
 ins1(arrayobject *self, Py_ssize_t where, PyObject *v)
 {
-	char *items;
-	Py_ssize_t n = Py_SIZE(self);
-	if (v == NULL) {
-		PyErr_BadInternalCall();
-		return -1;
-	}
-	if ((*self->ob_descr->setitem)(self, -1, v) < 0)
-		return -1;
+    char *items;
+    Py_ssize_t n = Py_SIZE(self);
+    if (v == NULL) {
+        PyErr_BadInternalCall();
+        return -1;
+    }
+    if ((*self->ob_descr->setitem)(self, -1, v) < 0)
+        return -1;
 
-	if (array_resize(self, n+1) == -1)
-		return -1;
-	items = self->ob_item;
-	if (where < 0) {
-		where += n;
-		if (where < 0)
-			where = 0;
-	}
-	if (where > n)
-		where = n;
-	/* appends don't need to call memmove() */
-	if (where != n)
-		memmove(items + (where+1)*self->ob_descr->itemsize,
-			items + where*self->ob_descr->itemsize,
-			(n-where)*self->ob_descr->itemsize);
-	return (*self->ob_descr->setitem)(self, where, v);
+    if (array_resize(self, n+1) == -1)
+        return -1;
+    items = self->ob_item;
+    if (where < 0) {
+        where += n;
+        if (where < 0)
+            where = 0;
+    }
+    if (where > n)
+        where = n;
+    /* appends don't need to call memmove() */
+    if (where != n)
+        memmove(items + (where+1)*self->ob_descr->itemsize,
+            items + where*self->ob_descr->itemsize,
+            (n-where)*self->ob_descr->itemsize);
+    return (*self->ob_descr->setitem)(self, where, v);
 }
 
 /* Methods */
@@ -498,141 +498,141 @@
 static void
 array_dealloc(arrayobject *op)
 {
-	if (op->weakreflist != NULL)
-		PyObject_ClearWeakRefs((PyObject *) op);
-	if (op->ob_item != NULL)
-		PyMem_DEL(op->ob_item);
-	Py_TYPE(op)->tp_free((PyObject *)op);
+    if (op->weakreflist != NULL)
+        PyObject_ClearWeakRefs((PyObject *) op);
+    if (op->ob_item != NULL)
+        PyMem_DEL(op->ob_item);
+    Py_TYPE(op)->tp_free((PyObject *)op);
 }
 
 static PyObject *
 array_richcompare(PyObject *v, PyObject *w, int op)
 {
-	arrayobject *va, *wa;
-	PyObject *vi = NULL;
-	PyObject *wi = NULL;
-	Py_ssize_t i, k;
-	PyObject *res;
+    arrayobject *va, *wa;
+    PyObject *vi = NULL;
+    PyObject *wi = NULL;
+    Py_ssize_t i, k;
+    PyObject *res;
 
-	if (!array_Check(v) || !array_Check(w)) {
-		Py_INCREF(Py_NotImplemented);
-		return Py_NotImplemented;
-	}
+    if (!array_Check(v) || !array_Check(w)) {
+        Py_INCREF(Py_NotImplemented);
+        return Py_NotImplemented;
+    }
 
-	va = (arrayobject *)v;
-	wa = (arrayobject *)w;
+    va = (arrayobject *)v;
+    wa = (arrayobject *)w;
 
-	if (Py_SIZE(va) != Py_SIZE(wa) && (op == Py_EQ || op == Py_NE)) {
-		/* Shortcut: if the lengths differ, the arrays differ */
-		if (op == Py_EQ)
-			res = Py_False;
-		else
-			res = Py_True;
-		Py_INCREF(res);
-		return res;
-	}
+    if (Py_SIZE(va) != Py_SIZE(wa) && (op == Py_EQ || op == Py_NE)) {
+        /* Shortcut: if the lengths differ, the arrays differ */
+        if (op == Py_EQ)
+            res = Py_False;
+        else
+            res = Py_True;
+        Py_INCREF(res);
+        return res;
+    }
 
-	/* Search for the first index where items are different */
-	k = 1;
-	for (i = 0; i < Py_SIZE(va) && i < Py_SIZE(wa); i++) {
-		vi = getarrayitem(v, i);
-		wi = getarrayitem(w, i);
-		if (vi == NULL || wi == NULL) {
-			Py_XDECREF(vi);
-			Py_XDECREF(wi);
-			return NULL;
-		}
-		k = PyObject_RichCompareBool(vi, wi, Py_EQ);
-		if (k == 0)
-			break; /* Keeping vi and wi alive! */
-		Py_DECREF(vi);
-		Py_DECREF(wi);
-		if (k < 0)
-			return NULL;
-	}
+    /* Search for the first index where items are different */
+    k = 1;
+    for (i = 0; i < Py_SIZE(va) && i < Py_SIZE(wa); i++) {
+        vi = getarrayitem(v, i);
+        wi = getarrayitem(w, i);
+        if (vi == NULL || wi == NULL) {
+            Py_XDECREF(vi);
+            Py_XDECREF(wi);
+            return NULL;
+        }
+        k = PyObject_RichCompareBool(vi, wi, Py_EQ);
+        if (k == 0)
+            break; /* Keeping vi and wi alive! */
+        Py_DECREF(vi);
+        Py_DECREF(wi);
+        if (k < 0)
+            return NULL;
+    }
 
-	if (k) {
-		/* No more items to compare -- compare sizes */
-		Py_ssize_t vs = Py_SIZE(va);
-		Py_ssize_t ws = Py_SIZE(wa);
-		int cmp;
-		switch (op) {
-		case Py_LT: cmp = vs <  ws; break;
-		case Py_LE: cmp = vs <= ws; break;
-		case Py_EQ: cmp = vs == ws; break;
-		case Py_NE: cmp = vs != ws; break;
-		case Py_GT: cmp = vs >  ws; break;
-		case Py_GE: cmp = vs >= ws; break;
-		default: return NULL; /* cannot happen */
-		}
-		if (cmp)
-			res = Py_True;
-		else
-			res = Py_False;
-		Py_INCREF(res);
-		return res;
-	}
+    if (k) {
+        /* No more items to compare -- compare sizes */
+        Py_ssize_t vs = Py_SIZE(va);
+        Py_ssize_t ws = Py_SIZE(wa);
+        int cmp;
+        switch (op) {
+        case Py_LT: cmp = vs <  ws; break;
+        case Py_LE: cmp = vs <= ws; break;
+        case Py_EQ: cmp = vs == ws; break;
+        case Py_NE: cmp = vs != ws; break;
+        case Py_GT: cmp = vs >  ws; break;
+        case Py_GE: cmp = vs >= ws; break;
+        default: return NULL; /* cannot happen */
+        }
+        if (cmp)
+            res = Py_True;
+        else
+            res = Py_False;
+        Py_INCREF(res);
+        return res;
+    }
 
-	/* We have an item that differs.  First, shortcuts for EQ/NE */
-	if (op == Py_EQ) {
-		Py_INCREF(Py_False);
-		res = Py_False;
-	}
-	else if (op == Py_NE) {
-		Py_INCREF(Py_True);
-		res = Py_True;
-	}
-	else {
-		/* Compare the final item again using the proper operator */
-		res = PyObject_RichCompare(vi, wi, op);
-	}
-	Py_DECREF(vi);
-	Py_DECREF(wi);
-	return res;
+    /* We have an item that differs.  First, shortcuts for EQ/NE */
+    if (op == Py_EQ) {
+        Py_INCREF(Py_False);
+        res = Py_False;
+    }
+    else if (op == Py_NE) {
+        Py_INCREF(Py_True);
+        res = Py_True;
+    }
+    else {
+        /* Compare the final item again using the proper operator */
+        res = PyObject_RichCompare(vi, wi, op);
+    }
+    Py_DECREF(vi);
+    Py_DECREF(wi);
+    return res;
 }
 
 static Py_ssize_t
 array_length(arrayobject *a)
 {
-	return Py_SIZE(a);
+    return Py_SIZE(a);
 }
 
 static PyObject *
 array_item(arrayobject *a, Py_ssize_t i)
 {
-	if (i < 0 || i >= Py_SIZE(a)) {
-		PyErr_SetString(PyExc_IndexError, "array index out of range");
-		return NULL;
-	}
-	return getarrayitem((PyObject *)a, i);
+    if (i < 0 || i >= Py_SIZE(a)) {
+        PyErr_SetString(PyExc_IndexError, "array index out of range");
+        return NULL;
+    }
+    return getarrayitem((PyObject *)a, i);
 }
 
 static PyObject *
 array_slice(arrayobject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
 {
-	arrayobject *np;
-	if (ilow < 0)
-		ilow = 0;
-	else if (ilow > Py_SIZE(a))
-		ilow = Py_SIZE(a);
-	if (ihigh < 0)
-		ihigh = 0;
-	if (ihigh < ilow)
-		ihigh = ilow;
-	else if (ihigh > Py_SIZE(a))
-		ihigh = Py_SIZE(a);
-	np = (arrayobject *) newarrayobject(&Arraytype, ihigh - ilow, a->ob_descr);
-	if (np == NULL)
-		return NULL;
-	memcpy(np->ob_item, a->ob_item + ilow * a->ob_descr->itemsize,
-	       (ihigh-ilow) * a->ob_descr->itemsize);
-	return (PyObject *)np;
+    arrayobject *np;
+    if (ilow < 0)
+        ilow = 0;
+    else if (ilow > Py_SIZE(a))
+        ilow = Py_SIZE(a);
+    if (ihigh < 0)
+        ihigh = 0;
+    if (ihigh < ilow)
+        ihigh = ilow;
+    else if (ihigh > Py_SIZE(a))
+        ihigh = Py_SIZE(a);
+    np = (arrayobject *) newarrayobject(&Arraytype, ihigh - ilow, a->ob_descr);
+    if (np == NULL)
+        return NULL;
+    memcpy(np->ob_item, a->ob_item + ilow * a->ob_descr->itemsize,
+           (ihigh-ilow) * a->ob_descr->itemsize);
+    return (PyObject *)np;
 }
 
 static PyObject *
 array_copy(arrayobject *a, PyObject *unused)
 {
-	return array_slice(a, 0, Py_SIZE(a));
+    return array_slice(a, 0, Py_SIZE(a));
 }
 
 PyDoc_STRVAR(copy_doc,
@@ -643,278 +643,278 @@
 static PyObject *
 array_concat(arrayobject *a, PyObject *bb)
 {
-	Py_ssize_t size;
-	arrayobject *np;
-	if (!array_Check(bb)) {
-		PyErr_Format(PyExc_TypeError,
-		     "can only append array (not \"%.200s\") to array",
-			     Py_TYPE(bb)->tp_name);
-		return NULL;
-	}
+    Py_ssize_t size;
+    arrayobject *np;
+    if (!array_Check(bb)) {
+        PyErr_Format(PyExc_TypeError,
+             "can only append array (not \"%.200s\") to array",
+                 Py_TYPE(bb)->tp_name);
+        return NULL;
+    }
 #define b ((arrayobject *)bb)
-	if (a->ob_descr != b->ob_descr) {
-		PyErr_BadArgument();
-		return NULL;
-	}
-	if (Py_SIZE(a) > PY_SSIZE_T_MAX - Py_SIZE(b)) {
-		return PyErr_NoMemory();
-	}
-	size = Py_SIZE(a) + Py_SIZE(b);
-	np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr);
-	if (np == NULL) {
-		return NULL;
-	}
-	memcpy(np->ob_item, a->ob_item, Py_SIZE(a)*a->ob_descr->itemsize);
-	memcpy(np->ob_item + Py_SIZE(a)*a->ob_descr->itemsize,
-	       b->ob_item, Py_SIZE(b)*b->ob_descr->itemsize);
-	return (PyObject *)np;
+    if (a->ob_descr != b->ob_descr) {
+        PyErr_BadArgument();
+        return NULL;
+    }
+    if (Py_SIZE(a) > PY_SSIZE_T_MAX - Py_SIZE(b)) {
+        return PyErr_NoMemory();
+    }
+    size = Py_SIZE(a) + Py_SIZE(b);
+    np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr);
+    if (np == NULL) {
+        return NULL;
+    }
+    memcpy(np->ob_item, a->ob_item, Py_SIZE(a)*a->ob_descr->itemsize);
+    memcpy(np->ob_item + Py_SIZE(a)*a->ob_descr->itemsize,
+           b->ob_item, Py_SIZE(b)*b->ob_descr->itemsize);
+    return (PyObject *)np;
 #undef b
 }
 
 static PyObject *
 array_repeat(arrayobject *a, Py_ssize_t n)
 {
-	Py_ssize_t i;
-	Py_ssize_t size;
-	arrayobject *np;
-	char *p;
-	Py_ssize_t nbytes;
-	if (n < 0)
-		n = 0;
-	if ((Py_SIZE(a) != 0) && (n > PY_SSIZE_T_MAX / Py_SIZE(a))) {
-		return PyErr_NoMemory();
-	}
-	size = Py_SIZE(a) * n;
-	np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr);
-	if (np == NULL)
-		return NULL;
-	p = np->ob_item;
-	nbytes = Py_SIZE(a) * a->ob_descr->itemsize;
-	for (i = 0; i < n; i++) {
-		memcpy(p, a->ob_item, nbytes);
-		p += nbytes;
-	}
-	return (PyObject *) np;
+    Py_ssize_t i;
+    Py_ssize_t size;
+    arrayobject *np;
+    char *p;
+    Py_ssize_t nbytes;
+    if (n < 0)
+        n = 0;
+    if ((Py_SIZE(a) != 0) && (n > PY_SSIZE_T_MAX / Py_SIZE(a))) {
+        return PyErr_NoMemory();
+    }
+    size = Py_SIZE(a) * n;
+    np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr);
+    if (np == NULL)
+        return NULL;
+    p = np->ob_item;
+    nbytes = Py_SIZE(a) * a->ob_descr->itemsize;
+    for (i = 0; i < n; i++) {
+        memcpy(p, a->ob_item, nbytes);
+        p += nbytes;
+    }
+    return (PyObject *) np;
 }
 
 static int
 array_ass_slice(arrayobject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v)
 {
-	char *item;
-	Py_ssize_t n; /* Size of replacement array */
-	Py_ssize_t d; /* Change in size */
+    char *item;
+    Py_ssize_t n; /* Size of replacement array */
+    Py_ssize_t d; /* Change in size */
 #define b ((arrayobject *)v)
-	if (v == NULL)
-		n = 0;
-	else if (array_Check(v)) {
-		n = Py_SIZE(b);
-		if (a == b) {
-			/* Special case "a[i:j] = a" -- copy b first */
-			int ret;
-			v = array_slice(b, 0, n);
-			if (!v)
-				return -1;
-			ret = array_ass_slice(a, ilow, ihigh, v);
-			Py_DECREF(v);
-			return ret;
-		}
-		if (b->ob_descr != a->ob_descr) {
-			PyErr_BadArgument();
-			return -1;
-		}
-	}
-	else {
-		PyErr_Format(PyExc_TypeError,
-	     "can only assign array (not \"%.200s\") to array slice",
-			     Py_TYPE(v)->tp_name);
-		return -1;
-	}
-	if (ilow < 0)
-		ilow = 0;
-	else if (ilow > Py_SIZE(a))
-		ilow = Py_SIZE(a);
-	if (ihigh < 0)
-		ihigh = 0;
-	if (ihigh < ilow)
-		ihigh = ilow;
-	else if (ihigh > Py_SIZE(a))
-		ihigh = Py_SIZE(a);
-	item = a->ob_item;
-	d = n - (ihigh-ilow);
-	/* Issue #4509: If the array has exported buffers and the slice
-	   assignment would change the size of the array, fail early to make
-	   sure we don't modify it. */
-	if (d != 0 && a->ob_exports > 0) {
-		PyErr_SetString(PyExc_BufferError, 
-			"cannot resize an array that is exporting buffers");
-		return -1;
-	}
-	if (d < 0) { /* Delete -d items */
-		memmove(item + (ihigh+d)*a->ob_descr->itemsize,
-			item + ihigh*a->ob_descr->itemsize,
-			(Py_SIZE(a)-ihigh)*a->ob_descr->itemsize);
-		if (array_resize(a, Py_SIZE(a) + d) == -1)
-		    return -1;
-	}
-	else if (d > 0) { /* Insert d items */
-		if (array_resize(a, Py_SIZE(a) + d))
-			return -1;
-		memmove(item + (ihigh+d)*a->ob_descr->itemsize,
-			item + ihigh*a->ob_descr->itemsize,
-			(Py_SIZE(a)-ihigh)*a->ob_descr->itemsize);
-	}
-	if (n > 0)
-		memcpy(item + ilow*a->ob_descr->itemsize, b->ob_item,
-		       n*b->ob_descr->itemsize);
-	return 0;
+    if (v == NULL)
+        n = 0;
+    else if (array_Check(v)) {
+        n = Py_SIZE(b);
+        if (a == b) {
+            /* Special case "a[i:j] = a" -- copy b first */
+            int ret;
+            v = array_slice(b, 0, n);
+            if (!v)
+                return -1;
+            ret = array_ass_slice(a, ilow, ihigh, v);
+            Py_DECREF(v);
+            return ret;
+        }
+        if (b->ob_descr != a->ob_descr) {
+            PyErr_BadArgument();
+            return -1;
+        }
+    }
+    else {
+        PyErr_Format(PyExc_TypeError,
+         "can only assign array (not \"%.200s\") to array slice",
+                         Py_TYPE(v)->tp_name);
+        return -1;
+    }
+    if (ilow < 0)
+        ilow = 0;
+    else if (ilow > Py_SIZE(a))
+        ilow = Py_SIZE(a);
+    if (ihigh < 0)
+        ihigh = 0;
+    if (ihigh < ilow)
+        ihigh = ilow;
+    else if (ihigh > Py_SIZE(a))
+        ihigh = Py_SIZE(a);
+    item = a->ob_item;
+    d = n - (ihigh-ilow);
+    /* Issue #4509: If the array has exported buffers and the slice
+       assignment would change the size of the array, fail early to make
+       sure we don't modify it. */
+    if (d != 0 && a->ob_exports > 0) {
+        PyErr_SetString(PyExc_BufferError,
+            "cannot resize an array that is exporting buffers");
+        return -1;
+    }
+    if (d < 0) { /* Delete -d items */
+        memmove(item + (ihigh+d)*a->ob_descr->itemsize,
+            item + ihigh*a->ob_descr->itemsize,
+            (Py_SIZE(a)-ihigh)*a->ob_descr->itemsize);
+        if (array_resize(a, Py_SIZE(a) + d) == -1)
+            return -1;
+    }
+    else if (d > 0) { /* Insert d items */
+        if (array_resize(a, Py_SIZE(a) + d))
+            return -1;
+        memmove(item + (ihigh+d)*a->ob_descr->itemsize,
+            item + ihigh*a->ob_descr->itemsize,
+            (Py_SIZE(a)-ihigh)*a->ob_descr->itemsize);
+    }
+    if (n > 0)
+        memcpy(item + ilow*a->ob_descr->itemsize, b->ob_item,
+               n*b->ob_descr->itemsize);
+    return 0;
 #undef b
 }
 
 static int
 array_ass_item(arrayobject *a, Py_ssize_t i, PyObject *v)
 {
-	if (i < 0 || i >= Py_SIZE(a)) {
-		PyErr_SetString(PyExc_IndexError,
-			         "array assignment index out of range");
-		return -1;
-	}
-	if (v == NULL)
-		return array_ass_slice(a, i, i+1, v);
-	return (*a->ob_descr->setitem)(a, i, v);
+    if (i < 0 || i >= Py_SIZE(a)) {
+        PyErr_SetString(PyExc_IndexError,
+                         "array assignment index out of range");
+        return -1;
+    }
+    if (v == NULL)
+        return array_ass_slice(a, i, i+1, v);
+    return (*a->ob_descr->setitem)(a, i, v);
 }
 
 static int
 setarrayitem(PyObject *a, Py_ssize_t i, PyObject *v)
 {
-	assert(array_Check(a));
-	return array_ass_item((arrayobject *)a, i, v);
+    assert(array_Check(a));
+    return array_ass_item((arrayobject *)a, i, v);
 }
 
 static int
 array_iter_extend(arrayobject *self, PyObject *bb)
 {
-	PyObject *it, *v;
+    PyObject *it, *v;
 
-	it = PyObject_GetIter(bb);
-	if (it == NULL)
-		return -1;
+    it = PyObject_GetIter(bb);
+    if (it == NULL)
+        return -1;
 
-	while ((v = PyIter_Next(it)) != NULL) {
-		if (ins1(self, (int) Py_SIZE(self), v) != 0) {
-			Py_DECREF(v);
-			Py_DECREF(it);
-			return -1;
-		}
-		Py_DECREF(v);
-	}
-	Py_DECREF(it);
-	if (PyErr_Occurred())
-		return -1;
-	return 0;
+    while ((v = PyIter_Next(it)) != NULL) {
+        if (ins1(self, (int) Py_SIZE(self), v) != 0) {
+            Py_DECREF(v);
+            Py_DECREF(it);
+            return -1;
+        }
+        Py_DECREF(v);
+    }
+    Py_DECREF(it);
+    if (PyErr_Occurred())
+        return -1;
+    return 0;
 }
 
 static int
 array_do_extend(arrayobject *self, PyObject *bb)
 {
-	Py_ssize_t size, oldsize, bbsize;
-	
-	if (!array_Check(bb))
-		return array_iter_extend(self, bb);
-#define b ((arrayobject *)bb)
-	if (self->ob_descr != b->ob_descr) {
-		PyErr_SetString(PyExc_TypeError,
-			     "can only extend with array of same kind");
-		return -1;
-	}
-	if ((Py_SIZE(self) > PY_SSIZE_T_MAX - Py_SIZE(b)) ||
-		((Py_SIZE(self) + Py_SIZE(b)) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
-		PyErr_NoMemory();
-		return -1;
-	}
-	oldsize = Py_SIZE(self);
-	/* Get the size of bb before resizing the array since bb could be self. */
-	bbsize = Py_SIZE(bb);
-	size = oldsize + Py_SIZE(b);
-	if (array_resize(self, size) == -1)
-		return -1;
-	memcpy(self->ob_item + oldsize * self->ob_descr->itemsize,
-		b->ob_item, bbsize * b->ob_descr->itemsize);
+    Py_ssize_t size, oldsize, bbsize;
 
-	return 0;
+    if (!array_Check(bb))
+        return array_iter_extend(self, bb);
+#define b ((arrayobject *)bb)
+    if (self->ob_descr != b->ob_descr) {
+        PyErr_SetString(PyExc_TypeError,
+                     "can only extend with array of same kind");
+        return -1;
+    }
+    if ((Py_SIZE(self) > PY_SSIZE_T_MAX - Py_SIZE(b)) ||
+        ((Py_SIZE(self) + Py_SIZE(b)) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
+        PyErr_NoMemory();
+        return -1;
+    }
+    oldsize = Py_SIZE(self);
+    /* Get the size of bb before resizing the array since bb could be self. */
+    bbsize = Py_SIZE(bb);
+    size = oldsize + Py_SIZE(b);
+    if (array_resize(self, size) == -1)
+        return -1;
+    memcpy(self->ob_item + oldsize * self->ob_descr->itemsize,
+        b->ob_item, bbsize * b->ob_descr->itemsize);
+
+    return 0;
 #undef b
 }
 
 static PyObject *
 array_inplace_concat(arrayobject *self, PyObject *bb)
 {
-	if (!array_Check(bb)) {
-		PyErr_Format(PyExc_TypeError,
-			"can only extend array with array (not \"%.200s\")",
-			Py_TYPE(bb)->tp_name);
-		return NULL;
-	}
-	if (array_do_extend(self, bb) == -1)
-		return NULL;
-	Py_INCREF(self);
-	return (PyObject *)self;
+    if (!array_Check(bb)) {
+        PyErr_Format(PyExc_TypeError,
+            "can only extend array with array (not \"%.200s\")",
+            Py_TYPE(bb)->tp_name);
+        return NULL;
+    }
+    if (array_do_extend(self, bb) == -1)
+        return NULL;
+    Py_INCREF(self);
+    return (PyObject *)self;
 }
 
 static PyObject *
 array_inplace_repeat(arrayobject *self, Py_ssize_t n)
 {
-	char *items, *p;
-	Py_ssize_t size, i;
+    char *items, *p;
+    Py_ssize_t size, i;
 
-	if (Py_SIZE(self) > 0) {
-		if (n < 0)
-			n = 0;
-		items = self->ob_item;
-		if ((self->ob_descr->itemsize != 0) && 
-			(Py_SIZE(self) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
-			return PyErr_NoMemory();
-		}
-		size = Py_SIZE(self) * self->ob_descr->itemsize;
-		if (n > 0 && size > PY_SSIZE_T_MAX / n) {
-			return PyErr_NoMemory();
-		}
-		if (array_resize(self, n * Py_SIZE(self)) == -1)
-			return NULL;
-		items = p = self->ob_item;
-		for (i = 1; i < n; i++) {
-			p += size;
-			memcpy(p, items, size);
-		}
-	}
-	Py_INCREF(self);
-	return (PyObject *)self;
+    if (Py_SIZE(self) > 0) {
+        if (n < 0)
+            n = 0;
+        items = self->ob_item;
+        if ((self->ob_descr->itemsize != 0) &&
+            (Py_SIZE(self) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
+            return PyErr_NoMemory();
+        }
+        size = Py_SIZE(self) * self->ob_descr->itemsize;
+        if (n > 0 && size > PY_SSIZE_T_MAX / n) {
+            return PyErr_NoMemory();
+        }
+        if (array_resize(self, n * Py_SIZE(self)) == -1)
+            return NULL;
+        items = p = self->ob_item;
+        for (i = 1; i < n; i++) {
+            p += size;
+            memcpy(p, items, size);
+        }
+    }
+    Py_INCREF(self);
+    return (PyObject *)self;
 }
 
 
 static PyObject *
 ins(arrayobject *self, Py_ssize_t where, PyObject *v)
 {
-	if (ins1(self, where, v) != 0)
-		return NULL;
-	Py_INCREF(Py_None);
-	return Py_None;
+    if (ins1(self, where, v) != 0)
+        return NULL;
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 static PyObject *
 array_count(arrayobject *self, PyObject *v)
 {
-	Py_ssize_t count = 0;
-	Py_ssize_t i;
+    Py_ssize_t count = 0;
+    Py_ssize_t i;
 
-	for (i = 0; i < Py_SIZE(self); i++) {
-		PyObject *selfi = getarrayitem((PyObject *)self, i);
-		int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-		Py_DECREF(selfi);
-		if (cmp > 0)
-			count++;
-		else if (cmp < 0)
-			return NULL;
-	}
-	return PyLong_FromSsize_t(count);
+    for (i = 0; i < Py_SIZE(self); i++) {
+        PyObject *selfi = getarrayitem((PyObject *)self, i);
+        int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
+        Py_DECREF(selfi);
+        if (cmp > 0)
+            count++;
+        else if (cmp < 0)
+            return NULL;
+    }
+    return PyLong_FromSsize_t(count);
 }
 
 PyDoc_STRVAR(count_doc,
@@ -925,20 +925,20 @@
 static PyObject *
 array_index(arrayobject *self, PyObject *v)
 {
-	Py_ssize_t i;
+    Py_ssize_t i;
 
-	for (i = 0; i < Py_SIZE(self); i++) {
-		PyObject *selfi = getarrayitem((PyObject *)self, i);
-		int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-		Py_DECREF(selfi);
-		if (cmp > 0) {
-			return PyLong_FromLong((long)i);
-		}
-		else if (cmp < 0)
-			return NULL;
-	}
-	PyErr_SetString(PyExc_ValueError, "array.index(x): x not in list");
-	return NULL;
+    for (i = 0; i < Py_SIZE(self); i++) {
+        PyObject *selfi = getarrayitem((PyObject *)self, i);
+        int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
+        Py_DECREF(selfi);
+        if (cmp > 0) {
+            return PyLong_FromLong((long)i);
+        }
+        else if (cmp < 0)
+            return NULL;
+    }
+    PyErr_SetString(PyExc_ValueError, "array.index(x): x not in list");
+    return NULL;
 }
 
 PyDoc_STRVAR(index_doc,
@@ -949,38 +949,38 @@
 static int
 array_contains(arrayobject *self, PyObject *v)
 {
-	Py_ssize_t i;
-	int cmp;
+    Py_ssize_t i;
+    int cmp;
 
-	for (i = 0, cmp = 0 ; cmp == 0 && i < Py_SIZE(self); i++) {
-		PyObject *selfi = getarrayitem((PyObject *)self, i);
-		cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-		Py_DECREF(selfi);
-	}
-	return cmp;
+    for (i = 0, cmp = 0 ; cmp == 0 && i < Py_SIZE(self); i++) {
+        PyObject *selfi = getarrayitem((PyObject *)self, i);
+        cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
+        Py_DECREF(selfi);
+    }
+    return cmp;
 }
 
 static PyObject *
 array_remove(arrayobject *self, PyObject *v)
 {
-	int i;
+    int i;
 
-	for (i = 0; i < Py_SIZE(self); i++) {
-		PyObject *selfi = getarrayitem((PyObject *)self,i);
-		int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-		Py_DECREF(selfi);
-		if (cmp > 0) {
-			if (array_ass_slice(self, i, i+1,
-					   (PyObject *)NULL) != 0)
-				return NULL;
-			Py_INCREF(Py_None);
-			return Py_None;
-		}
-		else if (cmp < 0)
-			return NULL;
-	}
-	PyErr_SetString(PyExc_ValueError, "array.remove(x): x not in list");
-	return NULL;
+    for (i = 0; i < Py_SIZE(self); i++) {
+        PyObject *selfi = getarrayitem((PyObject *)self,i);
+        int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
+        Py_DECREF(selfi);
+        if (cmp > 0) {
+            if (array_ass_slice(self, i, i+1,
+                               (PyObject *)NULL) != 0)
+                return NULL;
+            Py_INCREF(Py_None);
+            return Py_None;
+        }
+        else if (cmp < 0)
+            return NULL;
+    }
+    PyErr_SetString(PyExc_ValueError, "array.remove(x): x not in list");
+    return NULL;
 }
 
 PyDoc_STRVAR(remove_doc,
@@ -991,27 +991,27 @@
 static PyObject *
 array_pop(arrayobject *self, PyObject *args)
 {
-	Py_ssize_t i = -1;
-	PyObject *v;
-	if (!PyArg_ParseTuple(args, "|n:pop", &i))
-		return NULL;
-	if (Py_SIZE(self) == 0) {
-		/* Special-case most common failure cause */
-		PyErr_SetString(PyExc_IndexError, "pop from empty array");
-		return NULL;
-	}
-	if (i < 0)
-		i += Py_SIZE(self);
-	if (i < 0 || i >= Py_SIZE(self)) {
-		PyErr_SetString(PyExc_IndexError, "pop index out of range");
-		return NULL;
-	}
-	v = getarrayitem((PyObject *)self,i);
-	if (array_ass_slice(self, i, i+1, (PyObject *)NULL) != 0) {
-		Py_DECREF(v);
-		return NULL;
-	}
-	return v;
+    Py_ssize_t i = -1;
+    PyObject *v;
+    if (!PyArg_ParseTuple(args, "|n:pop", &i))
+        return NULL;
+    if (Py_SIZE(self) == 0) {
+        /* Special-case most common failure cause */
+        PyErr_SetString(PyExc_IndexError, "pop from empty array");
+        return NULL;
+    }
+    if (i < 0)
+        i += Py_SIZE(self);
+    if (i < 0 || i >= Py_SIZE(self)) {
+        PyErr_SetString(PyExc_IndexError, "pop index out of range");
+        return NULL;
+    }
+    v = getarrayitem((PyObject *)self,i);
+    if (array_ass_slice(self, i, i+1, (PyObject *)NULL) != 0) {
+        Py_DECREF(v);
+        return NULL;
+    }
+    return v;
 }
 
 PyDoc_STRVAR(pop_doc,
@@ -1022,10 +1022,10 @@
 static PyObject *
 array_extend(arrayobject *self, PyObject *bb)
 {
-	if (array_do_extend(self, bb) == -1)
-		return NULL;
-	Py_INCREF(Py_None);
-	return Py_None;
+    if (array_do_extend(self, bb) == -1)
+        return NULL;
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(extend_doc,
@@ -1036,11 +1036,11 @@
 static PyObject *
 array_insert(arrayobject *self, PyObject *args)
 {
-	Py_ssize_t i;
-	PyObject *v;
-        if (!PyArg_ParseTuple(args, "nO:insert", &i, &v))
-		return NULL;
-	return ins(self, i, v);
+    Py_ssize_t i;
+    PyObject *v;
+    if (!PyArg_ParseTuple(args, "nO:insert", &i, &v))
+        return NULL;
+    return ins(self, i, v);
 }
 
 PyDoc_STRVAR(insert_doc,
@@ -1052,15 +1052,15 @@
 static PyObject *
 array_buffer_info(arrayobject *self, PyObject *unused)
 {
-	PyObject* retval = NULL;
-	retval = PyTuple_New(2);
-	if (!retval)
-		return NULL;
+    PyObject* retval = NULL;
+    retval = PyTuple_New(2);
+    if (!retval)
+        return NULL;
 
-	PyTuple_SET_ITEM(retval, 0, PyLong_FromVoidPtr(self->ob_item));
-	PyTuple_SET_ITEM(retval, 1, PyLong_FromLong((long)(Py_SIZE(self))));
+    PyTuple_SET_ITEM(retval, 0, PyLong_FromVoidPtr(self->ob_item));
+    PyTuple_SET_ITEM(retval, 1, PyLong_FromLong((long)(Py_SIZE(self))));
 
-	return retval;
+    return retval;
 }
 
 PyDoc_STRVAR(buffer_info_doc,
@@ -1075,7 +1075,7 @@
 static PyObject *
 array_append(arrayobject *self, PyObject *v)
 {
-	return ins(self, (int) Py_SIZE(self), v);
+    return ins(self, (int) Py_SIZE(self), v);
 }
 
 PyDoc_STRVAR(append_doc,
@@ -1087,52 +1087,52 @@
 static PyObject *
 array_byteswap(arrayobject *self, PyObject *unused)
 {
-	char *p;
-	Py_ssize_t i;
+    char *p;
+    Py_ssize_t i;
 
-	switch (self->ob_descr->itemsize) {
-	case 1:
-		break;
-	case 2:
-		for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 2) {
-			char p0 = p[0];
-			p[0] = p[1];
-			p[1] = p0;
-		}
-		break;
-	case 4:
-		for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 4) {
-			char p0 = p[0];
-			char p1 = p[1];
-			p[0] = p[3];
-			p[1] = p[2];
-			p[2] = p1;
-			p[3] = p0;
-		}
-		break;
-	case 8:
-		for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 8) {
-			char p0 = p[0];
-			char p1 = p[1];
-			char p2 = p[2];
-			char p3 = p[3];
-			p[0] = p[7];
-			p[1] = p[6];
-			p[2] = p[5];
-			p[3] = p[4];
-			p[4] = p3;
-			p[5] = p2;
-			p[6] = p1;
-			p[7] = p0;
-		}
-		break;
-	default:
-		PyErr_SetString(PyExc_RuntimeError,
-			   "don't know how to byteswap this array type");
-		return NULL;
-	}
-	Py_INCREF(Py_None);
-	return Py_None;
+    switch (self->ob_descr->itemsize) {
+    case 1:
+        break;
+    case 2:
+        for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 2) {
+            char p0 = p[0];
+            p[0] = p[1];
+            p[1] = p0;
+        }
+        break;
+    case 4:
+        for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 4) {
+            char p0 = p[0];
+            char p1 = p[1];
+            p[0] = p[3];
+            p[1] = p[2];
+            p[2] = p1;
+            p[3] = p0;
+        }
+        break;
+    case 8:
+        for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 8) {
+            char p0 = p[0];
+            char p1 = p[1];
+            char p2 = p[2];
+            char p3 = p[3];
+            p[0] = p[7];
+            p[1] = p[6];
+            p[2] = p[5];
+            p[3] = p[4];
+            p[4] = p3;
+            p[5] = p2;
+            p[6] = p1;
+            p[7] = p0;
+        }
+        break;
+    default:
+        PyErr_SetString(PyExc_RuntimeError,
+                   "don't know how to byteswap this array type");
+        return NULL;
+    }
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(byteswap_doc,
@@ -1144,28 +1144,28 @@
 static PyObject *
 array_reverse(arrayobject *self, PyObject *unused)
 {
-	register Py_ssize_t itemsize = self->ob_descr->itemsize;
-	register char *p, *q;
-	/* little buffer to hold items while swapping */
-	char tmp[256];	/* 8 is probably enough -- but why skimp */
-	assert((size_t)itemsize <= sizeof(tmp));
+    register Py_ssize_t itemsize = self->ob_descr->itemsize;
+    register char *p, *q;
+    /* little buffer to hold items while swapping */
+    char tmp[256];      /* 8 is probably enough -- but why skimp */
+    assert((size_t)itemsize <= sizeof(tmp));
 
-	if (Py_SIZE(self) > 1) {
-		for (p = self->ob_item,
-		     q = self->ob_item + (Py_SIZE(self) - 1)*itemsize;
-		     p < q;
-		     p += itemsize, q -= itemsize) {
-			/* memory areas guaranteed disjoint, so memcpy
-			 * is safe (& memmove may be slower).
-			 */
-			memcpy(tmp, p, itemsize);
-			memcpy(p, q, itemsize);
-			memcpy(q, tmp, itemsize);
-		}
-	}
+    if (Py_SIZE(self) > 1) {
+        for (p = self->ob_item,
+             q = self->ob_item + (Py_SIZE(self) - 1)*itemsize;
+             p < q;
+             p += itemsize, q -= itemsize) {
+            /* memory areas guaranteed disjoint, so memcpy
+             * is safe (& memmove may be slower).
+             */
+            memcpy(tmp, p, itemsize);
+            memcpy(p, q, itemsize);
+            memcpy(q, tmp, itemsize);
+        }
+    }
 
-	Py_INCREF(Py_None);
-	return Py_None;
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(reverse_doc,
@@ -1180,51 +1180,51 @@
 static PyObject *
 array_fromfile(arrayobject *self, PyObject *args)
 {
-	PyObject *f, *b, *res;
-	Py_ssize_t itemsize = self->ob_descr->itemsize;
-	Py_ssize_t n, nbytes;
-	int not_enough_bytes;
+    PyObject *f, *b, *res;
+    Py_ssize_t itemsize = self->ob_descr->itemsize;
+    Py_ssize_t n, nbytes;
+    int not_enough_bytes;
 
-        if (!PyArg_ParseTuple(args, "On:fromfile", &f, &n))
-		return NULL;
+    if (!PyArg_ParseTuple(args, "On:fromfile", &f, &n))
+        return NULL;
 
-	nbytes = n * itemsize;
-	if (nbytes < 0 || nbytes/itemsize != n) {
-		PyErr_NoMemory();
-		return NULL;
-	}
+    nbytes = n * itemsize;
+    if (nbytes < 0 || nbytes/itemsize != n) {
+        PyErr_NoMemory();
+        return NULL;
+    }
 
-	b = PyObject_CallMethod(f, "read", "n", nbytes);
-	if (b == NULL)
-		return NULL;
+    b = PyObject_CallMethod(f, "read", "n", nbytes);
+    if (b == NULL)
+        return NULL;
 
-	if (!PyBytes_Check(b)) {
-		PyErr_SetString(PyExc_TypeError,
-				"read() didn't return bytes");
-		Py_DECREF(b);
-		return NULL;
-	}
+    if (!PyBytes_Check(b)) {
+        PyErr_SetString(PyExc_TypeError,
+                        "read() didn't return bytes");
+        Py_DECREF(b);
+        return NULL;
+    }
 
-	not_enough_bytes = (PyBytes_GET_SIZE(b) != nbytes);
+    not_enough_bytes = (PyBytes_GET_SIZE(b) != nbytes);
 
-	args = Py_BuildValue("(O)", b);
-	Py_DECREF(b);
-	if (args == NULL)
-		return NULL;
+    args = Py_BuildValue("(O)", b);
+    Py_DECREF(b);
+    if (args == NULL)
+        return NULL;
 
-	res = array_fromstring(self, args);
-	Py_DECREF(args);
-	if (res == NULL)
-		return NULL;
+    res = array_fromstring(self, args);
+    Py_DECREF(args);
+    if (res == NULL)
+        return NULL;
 
-	if (not_enough_bytes) {
-		PyErr_SetString(PyExc_EOFError,
-				"read() didn't return enough bytes");
-		Py_DECREF(res);
-		return NULL;
-	}
+    if (not_enough_bytes) {
+        PyErr_SetString(PyExc_EOFError,
+                        "read() didn't return enough bytes");
+        Py_DECREF(res);
+        return NULL;
+    }
 
-	return res;
+    return res;
 }
 
 PyDoc_STRVAR(fromfile_doc,
@@ -1237,35 +1237,35 @@
 static PyObject *
 array_tofile(arrayobject *self, PyObject *f)
 {
-	Py_ssize_t nbytes = Py_SIZE(self) * self->ob_descr->itemsize;
-	/* Write 64K blocks at a time */
-	/* XXX Make the block size settable */
-	int BLOCKSIZE = 64*1024;
-	Py_ssize_t nblocks = (nbytes + BLOCKSIZE - 1) / BLOCKSIZE;
-	Py_ssize_t i;
+    Py_ssize_t nbytes = Py_SIZE(self) * self->ob_descr->itemsize;
+    /* Write 64K blocks at a time */
+    /* XXX Make the block size settable */
+    int BLOCKSIZE = 64*1024;
+    Py_ssize_t nblocks = (nbytes + BLOCKSIZE - 1) / BLOCKSIZE;
+    Py_ssize_t i;
 
-        if (Py_SIZE(self) == 0)
-		goto done;
+    if (Py_SIZE(self) == 0)
+        goto done;
 
-	for (i = 0; i < nblocks; i++) {
-		char* ptr = self->ob_item + i*BLOCKSIZE;
-		Py_ssize_t size = BLOCKSIZE;
-		PyObject *bytes, *res;
-		if (i*BLOCKSIZE + size > nbytes)
-			size = nbytes - i*BLOCKSIZE;
-		bytes = PyBytes_FromStringAndSize(ptr, size);
-		if (bytes == NULL)
-			return NULL;
-		res = PyObject_CallMethod(f, "write", "O", bytes);
-		Py_DECREF(bytes);
-		if (res == NULL)
-			return NULL;
-		Py_DECREF(res); /* drop write result */
-	}
+    for (i = 0; i < nblocks; i++) {
+        char* ptr = self->ob_item + i*BLOCKSIZE;
+        Py_ssize_t size = BLOCKSIZE;
+        PyObject *bytes, *res;
+        if (i*BLOCKSIZE + size > nbytes)
+            size = nbytes - i*BLOCKSIZE;
+        bytes = PyBytes_FromStringAndSize(ptr, size);
+        if (bytes == NULL)
+            return NULL;
+        res = PyObject_CallMethod(f, "write", "O", bytes);
+        Py_DECREF(bytes);
+        if (res == NULL)
+            return NULL;
+        Py_DECREF(res); /* drop write result */
+    }
 
   done:
-	Py_INCREF(Py_None);
-	return Py_None;
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(tofile_doc,
@@ -1277,29 +1277,29 @@
 static PyObject *
 array_fromlist(arrayobject *self, PyObject *list)
 {
-	Py_ssize_t n;
+    Py_ssize_t n;
 
-	if (!PyList_Check(list)) {
-		PyErr_SetString(PyExc_TypeError, "arg must be list");
-		return NULL;
-	}
-	n = PyList_Size(list);
-	if (n > 0) {
-		Py_ssize_t i, old_size;
-		old_size = Py_SIZE(self);
-		if (array_resize(self, old_size + n) == -1)
-			return NULL;
-		for (i = 0; i < n; i++) {
-			PyObject *v = PyList_GetItem(list, i);
-			if ((*self->ob_descr->setitem)(self,
-					Py_SIZE(self) - n + i, v) != 0) {
-				array_resize(self, old_size);
-				return NULL;
-			}
-		}
-	}
-	Py_INCREF(Py_None);
-	return Py_None;
+    if (!PyList_Check(list)) {
+        PyErr_SetString(PyExc_TypeError, "arg must be list");
+        return NULL;
+    }
+    n = PyList_Size(list);
+    if (n > 0) {
+        Py_ssize_t i, old_size;
+        old_size = Py_SIZE(self);
+        if (array_resize(self, old_size + n) == -1)
+            return NULL;
+        for (i = 0; i < n; i++) {
+            PyObject *v = PyList_GetItem(list, i);
+            if ((*self->ob_descr->setitem)(self,
+                            Py_SIZE(self) - n + i, v) != 0) {
+                array_resize(self, old_size);
+                return NULL;
+            }
+        }
+    }
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(fromlist_doc,
@@ -1310,20 +1310,20 @@
 static PyObject *
 array_tolist(arrayobject *self, PyObject *unused)
 {
-	PyObject *list = PyList_New(Py_SIZE(self));
-	Py_ssize_t i;
+    PyObject *list = PyList_New(Py_SIZE(self));
+    Py_ssize_t i;
 
-	if (list == NULL)
-		return NULL;
-	for (i = 0; i < Py_SIZE(self); i++) {
-		PyObject *v = getarrayitem((PyObject *)self, i);
-		if (v == NULL) {
-			Py_DECREF(list);
-			return NULL;
-		}
-		PyList_SetItem(list, i, v);
-	}
-	return list;
+    if (list == NULL)
+        return NULL;
+    for (i = 0; i < Py_SIZE(self); i++) {
+        PyObject *v = getarrayitem((PyObject *)self, i);
+        if (v == NULL) {
+            Py_DECREF(list);
+            return NULL;
+        }
+        PyList_SetItem(list, i, v);
+    }
+    return list;
 }
 
 PyDoc_STRVAR(tolist_doc,
@@ -1335,30 +1335,30 @@
 static PyObject *
 array_fromstring(arrayobject *self, PyObject *args)
 {
-	char *str;
-	Py_ssize_t n;
-	int itemsize = self->ob_descr->itemsize;
-        if (!PyArg_ParseTuple(args, "s#:fromstring", &str, &n))
-		return NULL;
-	if (n % itemsize != 0) {
-		PyErr_SetString(PyExc_ValueError,
-			   "string length not a multiple of item size");
-		return NULL;
-	}
-	n = n / itemsize;
-	if (n > 0) {
-        Py_ssize_t old_size = Py_SIZE(self);
-		if ((n > PY_SSIZE_T_MAX - old_size) ||
-			((old_size + n) > PY_SSIZE_T_MAX / itemsize)) {
-				return PyErr_NoMemory();
-		}
-		if (array_resize(self, old_size + n) == -1)
-			return NULL;
-		memcpy(self->ob_item + old_size * itemsize,
-			str, n * itemsize);
-	}
-	Py_INCREF(Py_None);
-	return Py_None;
+    char *str;
+    Py_ssize_t n;
+    int itemsize = self->ob_descr->itemsize;
+    if (!PyArg_ParseTuple(args, "s#:fromstring", &str, &n))
+        return NULL;
+    if (n % itemsize != 0) {
+        PyErr_SetString(PyExc_ValueError,
+                   "string length not a multiple of item size");
+        return NULL;
+    }
+    n = n / itemsize;
+    if (n > 0) {
+    Py_ssize_t old_size = Py_SIZE(self);
+        if ((n > PY_SSIZE_T_MAX - old_size) ||
+            ((old_size + n) > PY_SSIZE_T_MAX / itemsize)) {
+                return PyErr_NoMemory();
+        }
+        if (array_resize(self, old_size + n) == -1)
+            return NULL;
+        memcpy(self->ob_item + old_size * itemsize,
+            str, n * itemsize);
+    }
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(fromstring_doc,
@@ -1371,12 +1371,12 @@
 static PyObject *
 array_tostring(arrayobject *self, PyObject *unused)
 {
-	if (Py_SIZE(self) <= PY_SSIZE_T_MAX / self->ob_descr->itemsize) {
-		return PyBytes_FromStringAndSize(self->ob_item,
-				    Py_SIZE(self) * self->ob_descr->itemsize);
-	} else {
-		return PyErr_NoMemory();
-	}
+    if (Py_SIZE(self) <= PY_SSIZE_T_MAX / self->ob_descr->itemsize) {
+        return PyBytes_FromStringAndSize(self->ob_item,
+                            Py_SIZE(self) * self->ob_descr->itemsize);
+    } else {
+        return PyErr_NoMemory();
+    }
 }
 
 PyDoc_STRVAR(tostring_doc,
@@ -1390,29 +1390,29 @@
 static PyObject *
 array_fromunicode(arrayobject *self, PyObject *args)
 {
-	Py_UNICODE *ustr;
-	Py_ssize_t n;
-	char typecode;
+    Py_UNICODE *ustr;
+    Py_ssize_t n;
+    char typecode;
 
-        if (!PyArg_ParseTuple(args, "u#:fromunicode", &ustr, &n))
-		return NULL;
-	typecode = self->ob_descr->typecode;
-	if ((typecode != 'u')) {
-	        PyErr_SetString(PyExc_ValueError,
-			"fromunicode() may only be called on "
-			"unicode type arrays");
-		return NULL;
-	}
-	if (n > 0) {
-		Py_ssize_t old_size = Py_SIZE(self);
-		if (array_resize(self, old_size + n) == -1)
-			return NULL;
-		memcpy(self->ob_item + old_size * sizeof(Py_UNICODE),
-		       ustr, n * sizeof(Py_UNICODE));
-	}
+    if (!PyArg_ParseTuple(args, "u#:fromunicode", &ustr, &n))
+        return NULL;
+    typecode = self->ob_descr->typecode;
+    if ((typecode != 'u')) {
+        PyErr_SetString(PyExc_ValueError,
+            "fromunicode() may only be called on "
+            "unicode type arrays");
+        return NULL;
+    }
+    if (n > 0) {
+        Py_ssize_t old_size = Py_SIZE(self);
+        if (array_resize(self, old_size + n) == -1)
+            return NULL;
+        memcpy(self->ob_item + old_size * sizeof(Py_UNICODE),
+               ustr, n * sizeof(Py_UNICODE));
+    }
 
-	Py_INCREF(Py_None);
-	return Py_None;
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 PyDoc_STRVAR(fromunicode_doc,
@@ -1427,14 +1427,14 @@
 static PyObject *
 array_tounicode(arrayobject *self, PyObject *unused)
 {
-	char typecode;
-	typecode = self->ob_descr->typecode;
-	if ((typecode != 'u')) {
-		PyErr_SetString(PyExc_ValueError,
-		     "tounicode() may only be called on unicode type arrays");
-		return NULL;
-	}
-	return PyUnicode_FromUnicode((Py_UNICODE *) self->ob_item, Py_SIZE(self));
+    char typecode;
+    typecode = self->ob_descr->typecode;
+    if ((typecode != 'u')) {
+        PyErr_SetString(PyExc_ValueError,
+             "tounicode() may only be called on unicode type arrays");
+        return NULL;
+    }
+    return PyUnicode_FromUnicode((Py_UNICODE *) self->ob_item, Py_SIZE(self));
 }
 
 PyDoc_STRVAR(tounicode_doc,
@@ -1450,71 +1450,71 @@
 /*********************** Pickling support ************************/
 
 enum machine_format_code {
-	UNKNOWN_FORMAT = -1,
-	/* UNKNOWN_FORMAT is used to indicate that the machine format for an
-	 * array type code cannot be interpreted. When this occurs, a list of
-	 * Python objects is used to represent the content of the array
-	 * instead of using the memory content of the array directly. In that
-	 * case, the array_reconstructor mechanism is bypassed completely, and
-	 * the standard array constructor is used instead.
-	 *
-	 * This is will most likely occur when the machine doesn't use IEEE
-	 * floating-point numbers.
-	 */
+    UNKNOWN_FORMAT = -1,
+    /* UNKNOWN_FORMAT is used to indicate that the machine format for an
+     * array type code cannot be interpreted. When this occurs, a list of
+     * Python objects is used to represent the content of the array
+     * instead of using the memory content of the array directly. In that
+     * case, the array_reconstructor mechanism is bypassed completely, and
+     * the standard array constructor is used instead.
+     *
+     * This is will most likely occur when the machine doesn't use IEEE
+     * floating-point numbers.
+     */
 
-	UNSIGNED_INT8 = 0,
-	SIGNED_INT8 = 1,
-	UNSIGNED_INT16_LE = 2,
-	UNSIGNED_INT16_BE = 3,
-	SIGNED_INT16_LE = 4,
-	SIGNED_INT16_BE = 5,
-	UNSIGNED_INT32_LE = 6,
-	UNSIGNED_INT32_BE = 7,
-	SIGNED_INT32_LE = 8,
-	SIGNED_INT32_BE = 9,
-	UNSIGNED_INT64_LE = 10,
-	UNSIGNED_INT64_BE = 11,
-	SIGNED_INT64_LE = 12,
-	SIGNED_INT64_BE = 13,
-	IEEE_754_FLOAT_LE = 14,
-	IEEE_754_FLOAT_BE = 15,
-	IEEE_754_DOUBLE_LE = 16,
-	IEEE_754_DOUBLE_BE = 17,
-	UTF16_LE = 18,
-	UTF16_BE = 19,
-	UTF32_LE = 20,
-	UTF32_BE = 21
+    UNSIGNED_INT8 = 0,
+    SIGNED_INT8 = 1,
+    UNSIGNED_INT16_LE = 2,
+    UNSIGNED_INT16_BE = 3,
+    SIGNED_INT16_LE = 4,
+    SIGNED_INT16_BE = 5,
+    UNSIGNED_INT32_LE = 6,
+    UNSIGNED_INT32_BE = 7,
+    SIGNED_INT32_LE = 8,
+    SIGNED_INT32_BE = 9,
+    UNSIGNED_INT64_LE = 10,
+    UNSIGNED_INT64_BE = 11,
+    SIGNED_INT64_LE = 12,
+    SIGNED_INT64_BE = 13,
+    IEEE_754_FLOAT_LE = 14,
+    IEEE_754_FLOAT_BE = 15,
+    IEEE_754_DOUBLE_LE = 16,
+    IEEE_754_DOUBLE_BE = 17,
+    UTF16_LE = 18,
+    UTF16_BE = 19,
+    UTF32_LE = 20,
+    UTF32_BE = 21
 };
 #define MACHINE_FORMAT_CODE_MIN 0
 #define MACHINE_FORMAT_CODE_MAX 21
 
 static const struct mformatdescr {
-	size_t size;
-	int is_signed;
-	int is_big_endian;
+    size_t size;
+    int is_signed;
+    int is_big_endian;
 } mformat_descriptors[] = {
-	{1, 0, 0},		/* 0: UNSIGNED_INT8 */
-	{1, 1, 0},		/* 1: SIGNED_INT8 */
-	{2, 0, 0},		/* 2: UNSIGNED_INT16_LE */
-	{2, 0, 1},		/* 3: UNSIGNED_INT16_BE */
-	{2, 1, 0},		/* 4: SIGNED_INT16_LE */
-	{2, 1, 1},		/* 5: SIGNED_INT16_BE */
-	{4, 0, 0},		/* 6: UNSIGNED_INT32_LE */
-	{4, 0, 1},		/* 7: UNSIGNED_INT32_BE */
-	{4, 1, 0},		/* 8: SIGNED_INT32_LE */
-	{4, 1, 1},		/* 9: SIGNED_INT32_BE */
-	{8, 0, 0},		/* 10: UNSIGNED_INT64_LE */
-	{8, 0, 1},		/* 11: UNSIGNED_INT64_BE */
-	{8, 1, 0},		/* 12: SIGNED_INT64_LE */
-	{8, 1, 1},		/* 13: SIGNED_INT64_BE */
-	{4, 0, 0},		/* 14: IEEE_754_FLOAT_LE */
-	{4, 0, 1},		/* 15: IEEE_754_FLOAT_BE */
-	{8, 0, 0},		/* 16: IEEE_754_DOUBLE_LE */
-	{8, 0, 1},		/* 17: IEEE_754_DOUBLE_BE */
-	{4, 0, 0},		/* 18: UTF16_LE */
-	{4, 0, 1},		/* 19: UTF16_BE */
-	{8, 0, 0},		/* 20: UTF32_LE */
-	{8, 0, 1}		/* 21: UTF32_BE */
+    {1, 0, 0},                  /* 0: UNSIGNED_INT8 */
+    {1, 1, 0},                  /* 1: SIGNED_INT8 */
+    {2, 0, 0},                  /* 2: UNSIGNED_INT16_LE */
+    {2, 0, 1},                  /* 3: UNSIGNED_INT16_BE */
+    {2, 1, 0},                  /* 4: SIGNED_INT16_LE */
+    {2, 1, 1},                  /* 5: SIGNED_INT16_BE */
+    {4, 0, 0},                  /* 6: UNSIGNED_INT32_LE */
+    {4, 0, 1},                  /* 7: UNSIGNED_INT32_BE */
+    {4, 1, 0},                  /* 8: SIGNED_INT32_LE */
+    {4, 1, 1},                  /* 9: SIGNED_INT32_BE */
+    {8, 0, 0},                  /* 10: UNSIGNED_INT64_LE */
+    {8, 0, 1},                  /* 11: UNSIGNED_INT64_BE */
+    {8, 1, 0},                  /* 12: SIGNED_INT64_LE */
+    {8, 1, 1},                  /* 13: SIGNED_INT64_BE */
+    {4, 0, 0},                  /* 14: IEEE_754_FLOAT_LE */
+    {4, 0, 1},                  /* 15: IEEE_754_FLOAT_BE */
+    {8, 0, 0},                  /* 16: IEEE_754_DOUBLE_LE */
+    {8, 0, 1},                  /* 17: IEEE_754_DOUBLE_BE */
+    {4, 0, 0},                  /* 18: UTF16_LE */
+    {4, 0, 1},                  /* 19: UTF16_BE */
+    {8, 0, 0},                  /* 20: UTF32_LE */
+    {8, 0, 1}                   /* 21: UTF32_BE */
 };
 
 
@@ -1527,86 +1527,86 @@
 typecode_to_mformat_code(int typecode)
 {
 #ifdef WORDS_BIGENDIAN
-	const int is_big_endian = 1;
+    const int is_big_endian = 1;
 #else
-	const int is_big_endian = 0;
+    const int is_big_endian = 0;
 #endif
-	size_t intsize;
-	int is_signed;
+    size_t intsize;
+    int is_signed;
 
-	switch (typecode) {
-	case 'b':
-		return SIGNED_INT8;
-	case 'B':
-		return UNSIGNED_INT8;
+    switch (typecode) {
+    case 'b':
+        return SIGNED_INT8;
+    case 'B':
+        return UNSIGNED_INT8;
 
-	case 'u':
-		if (sizeof(Py_UNICODE) == 2) {
-			return UTF16_LE + is_big_endian;
-		}
-		if (sizeof(Py_UNICODE) == 4) {
-			return UTF32_LE + is_big_endian;
-		}
-		return UNKNOWN_FORMAT;
+    case 'u':
+        if (sizeof(Py_UNICODE) == 2) {
+            return UTF16_LE + is_big_endian;
+        }
+        if (sizeof(Py_UNICODE) == 4) {
+            return UTF32_LE + is_big_endian;
+        }
+        return UNKNOWN_FORMAT;
 
-	case 'f':
-		if (sizeof(float) == 4) {
-			const float y = 16711938.0;
-			if (memcmp(&y, "\x4b\x7f\x01\x02", 4) == 0)
-				return IEEE_754_FLOAT_BE;
-			if (memcmp(&y, "\x02\x01\x7f\x4b", 4) == 0)
-				return IEEE_754_FLOAT_LE;
-		}
-		return UNKNOWN_FORMAT;
+    case 'f':
+        if (sizeof(float) == 4) {
+            const float y = 16711938.0;
+            if (memcmp(&y, "\x4b\x7f\x01\x02", 4) == 0)
+                return IEEE_754_FLOAT_BE;
+            if (memcmp(&y, "\x02\x01\x7f\x4b", 4) == 0)
+                return IEEE_754_FLOAT_LE;
+        }
+        return UNKNOWN_FORMAT;
 
-	case 'd':
-		if (sizeof(double) == 8) {
-			const double x = 9006104071832581.0;
-			if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
-				return IEEE_754_DOUBLE_BE;
-			if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
-				return IEEE_754_DOUBLE_LE;
-		}
-		return UNKNOWN_FORMAT;
+    case 'd':
+        if (sizeof(double) == 8) {
+            const double x = 9006104071832581.0;
+            if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
+                return IEEE_754_DOUBLE_BE;
+            if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
+                return IEEE_754_DOUBLE_LE;
+        }
+        return UNKNOWN_FORMAT;
 
-	/* Integers */
-	case 'h':
-		intsize = sizeof(short);
-		is_signed = 1;
-		break;
-	case 'H':
-		intsize = sizeof(short);
-		is_signed = 0;
-		break;
-	case 'i':
-		intsize = sizeof(int);
-		is_signed = 1;
-		break;
-	case 'I':
-		intsize = sizeof(int);
-		is_signed = 0;
-		break;
-	case 'l':
-		intsize = sizeof(long);
-		is_signed = 1;
-		break;
-	case 'L':
-		intsize = sizeof(long);
-		is_signed = 0;
-		break;
-	default:
-		return UNKNOWN_FORMAT;
-	}
-	switch (intsize) {
-	case 2:
-		return UNSIGNED_INT16_LE + is_big_endian + (2 * is_signed);
-	case 4:
-		return UNSIGNED_INT32_LE + is_big_endian + (2 * is_signed);
-	case 8:
-		return UNSIGNED_INT64_LE + is_big_endian + (2 * is_signed);
-	default:
-		return UNKNOWN_FORMAT;
-	}
+    /* Integers */
+    case 'h':
+        intsize = sizeof(short);
+        is_signed = 1;
+        break;
+    case 'H':
+        intsize = sizeof(short);
+        is_signed = 0;
+        break;
+    case 'i':
+        intsize = sizeof(int);
+        is_signed = 1;
+        break;
+    case 'I':
+        intsize = sizeof(int);
+        is_signed = 0;
+        break;
+    case 'l':
+        intsize = sizeof(long);
+        is_signed = 1;
+        break;
+    case 'L':
+        intsize = sizeof(long);
+        is_signed = 0;
+        break;
+    default:
+        return UNKNOWN_FORMAT;
+    }
+    switch (intsize) {
+    case 2:
+        return UNSIGNED_INT16_LE + is_big_endian + (2 * is_signed);
+    case 4:
+        return UNSIGNED_INT32_LE + is_big_endian + (2 * is_signed);
+    case 8:
+        return UNSIGNED_INT64_LE + is_big_endian + (2 * is_signed);
+    default:
+        return UNKNOWN_FORMAT;
+    }
 }
 
 /* Forward declaration. */
@@ -1619,38 +1619,38 @@
  * Unicode character value, like 'i' or 'f' for example, representing an array
  * type code. The items argument is a bytes or a list object from which
  * contains the initial value of the array.
- *  
+ *
  * On success, this functions returns the array object created. Otherwise,
  * NULL is returned to indicate a failure.
  */
 static PyObject *
 make_array(PyTypeObject *arraytype, int typecode, PyObject *items)
 {
-	PyObject *new_args;
-	PyObject *array_obj;
-	PyObject *typecode_obj;
-	Py_UNICODE typecode_str[1] = {typecode};
+    PyObject *new_args;
+    PyObject *array_obj;
+    PyObject *typecode_obj;
+    Py_UNICODE typecode_str[1] = {typecode};
 
-	assert(arraytype != NULL);
-	assert(items != NULL);
+    assert(arraytype != NULL);
+    assert(items != NULL);
 
-	typecode_obj = PyUnicode_FromUnicode(typecode_str, 1);
-	if (typecode_obj == NULL)
-		return NULL;
+    typecode_obj = PyUnicode_FromUnicode(typecode_str, 1);
+    if (typecode_obj == NULL)
+        return NULL;
 
-	new_args = PyTuple_New(2);
-	if (new_args == NULL)
-		return NULL;
-	Py_INCREF(items);
-	PyTuple_SET_ITEM(new_args, 0, typecode_obj);
-	PyTuple_SET_ITEM(new_args, 1, items);
+    new_args = PyTuple_New(2);
+    if (new_args == NULL)
+        return NULL;
+    Py_INCREF(items);
+    PyTuple_SET_ITEM(new_args, 0, typecode_obj);
+    PyTuple_SET_ITEM(new_args, 1, items);
 
-	array_obj = array_new(arraytype, new_args, NULL);
-	Py_DECREF(new_args);
-	if (array_obj == NULL)
-		return NULL;
+    array_obj = array_new(arraytype, new_args, NULL);
+    Py_DECREF(new_args);
+    if (array_obj == NULL)
+        return NULL;
 
-	return array_obj;
+    return array_obj;
 }
 
 /*
@@ -1660,283 +1660,283 @@
 static PyObject *
 array_reconstructor(PyObject *self, PyObject *args)
 {
-	PyTypeObject *arraytype;
-	PyObject *items;
-	PyObject *converted_items;
-	PyObject *result;
-	int typecode;
-	enum machine_format_code mformat_code;
-	struct arraydescr *descr;
+    PyTypeObject *arraytype;
+    PyObject *items;
+    PyObject *converted_items;
+    PyObject *result;
+    int typecode;
+    enum machine_format_code mformat_code;
+    struct arraydescr *descr;
 
-	if (!PyArg_ParseTuple(args, "OCiO:array._array_reconstructor",
-			&arraytype, &typecode, &mformat_code, &items))
-		return NULL;
+    if (!PyArg_ParseTuple(args, "OCiO:array._array_reconstructor",
+                    &arraytype, &typecode, &mformat_code, &items))
+        return NULL;
 
-	if (!PyType_Check(arraytype)) {
-		PyErr_Format(PyExc_TypeError,
-			"first argument must a type object, not %.200s",
-			Py_TYPE(arraytype)->tp_name);
-		return NULL;
-	}
-	if (!PyType_IsSubtype(arraytype, &Arraytype)) {
-		PyErr_Format(PyExc_TypeError,
-			"%.200s is not a subtype of %.200s",
-			arraytype->tp_name, Arraytype.tp_name);
-		return NULL;
-	}
-	for (descr = descriptors; descr->typecode != '\0'; descr++) {
-		if (descr->typecode == typecode)
-			break;
-	}
-	if (descr->typecode == '\0') {
-		PyErr_SetString(PyExc_ValueError,
-				"second argument must be a valid type code");
-		return NULL;
-	}
-	if (mformat_code < MACHINE_FORMAT_CODE_MIN ||
-	    mformat_code > MACHINE_FORMAT_CODE_MAX) {
-		PyErr_SetString(PyExc_ValueError,
-			"third argument must be a valid machine format code.");
-		return NULL;
-	}
-	if (!PyBytes_Check(items)) {
-		PyErr_Format(PyExc_TypeError,
-			"fourth argument should be bytes, not %.200s",
-			Py_TYPE(items)->tp_name);
-		return NULL;
-	}
+    if (!PyType_Check(arraytype)) {
+        PyErr_Format(PyExc_TypeError,
+            "first argument must a type object, not %.200s",
+            Py_TYPE(arraytype)->tp_name);
+        return NULL;
+    }
+    if (!PyType_IsSubtype(arraytype, &Arraytype)) {
+        PyErr_Format(PyExc_TypeError,
+            "%.200s is not a subtype of %.200s",
+            arraytype->tp_name, Arraytype.tp_name);
+        return NULL;
+    }
+    for (descr = descriptors; descr->typecode != '\0'; descr++) {
+        if (descr->typecode == typecode)
+            break;
+    }
+    if (descr->typecode == '\0') {
+        PyErr_SetString(PyExc_ValueError,
+                        "second argument must be a valid type code");
+        return NULL;
+    }
+    if (mformat_code < MACHINE_FORMAT_CODE_MIN ||
+        mformat_code > MACHINE_FORMAT_CODE_MAX) {
+        PyErr_SetString(PyExc_ValueError,
+            "third argument must be a valid machine format code.");
+        return NULL;
+    }
+    if (!PyBytes_Check(items)) {
+        PyErr_Format(PyExc_TypeError,
+            "fourth argument should be bytes, not %.200s",
+            Py_TYPE(items)->tp_name);
+        return NULL;
+    }
 
-	/* Fast path: No decoding has to be done. */
-	if (mformat_code == typecode_to_mformat_code(typecode) ||
-	    mformat_code == UNKNOWN_FORMAT) {
-		return make_array(arraytype, typecode, items);
-	}
+    /* Fast path: No decoding has to be done. */
+    if (mformat_code == typecode_to_mformat_code(typecode) ||
+        mformat_code == UNKNOWN_FORMAT) {
+        return make_array(arraytype, typecode, items);
+    }
 
-	/* Slow path: Decode the byte string according to the given machine
-	 * format code. This occurs when the computer unpickling the array 
-	 * object is architecturally different from the one that pickled the
-	 * array.
-	 */
-	if (Py_SIZE(items) % mformat_descriptors[mformat_code].size != 0) {
-		PyErr_SetString(PyExc_ValueError,
-				"string length not a multiple of item size");
-		return NULL;
-	}
-	switch (mformat_code) {
-	case IEEE_754_FLOAT_LE:
-	case IEEE_754_FLOAT_BE: {
-		int i;
-		int le = (mformat_code == IEEE_754_FLOAT_LE) ? 1 : 0;
-		Py_ssize_t itemcount = Py_SIZE(items) / 4;
-		const unsigned char *memstr =
-			(unsigned char *)PyBytes_AS_STRING(items);
+    /* Slow path: Decode the byte string according to the given machine
+     * format code. This occurs when the computer unpickling the array
+     * object is architecturally different from the one that pickled the
+     * array.
+     */
+    if (Py_SIZE(items) % mformat_descriptors[mformat_code].size != 0) {
+        PyErr_SetString(PyExc_ValueError,
+                        "string length not a multiple of item size");
+        return NULL;
+    }
+    switch (mformat_code) {
+    case IEEE_754_FLOAT_LE:
+    case IEEE_754_FLOAT_BE: {
+        int i;
+        int le = (mformat_code == IEEE_754_FLOAT_LE) ? 1 : 0;
+        Py_ssize_t itemcount = Py_SIZE(items) / 4;
+        const unsigned char *memstr =
+            (unsigned char *)PyBytes_AS_STRING(items);
 
-		converted_items = PyList_New(itemcount);
-		if (converted_items == NULL)
-			return NULL;
-		for (i = 0; i < itemcount; i++) {
-			PyObject *pyfloat = PyFloat_FromDouble(
-				_PyFloat_Unpack4(&memstr[i * 4], le));
-			if (pyfloat == NULL) {
-				Py_DECREF(converted_items);
-				return NULL;
-			}
-			PyList_SET_ITEM(converted_items, i, pyfloat);
-		}
-		break;
-	}
-	case IEEE_754_DOUBLE_LE:
-	case IEEE_754_DOUBLE_BE: {
-		int i;
-		int le = (mformat_code == IEEE_754_DOUBLE_LE) ? 1 : 0;
-		Py_ssize_t itemcount = Py_SIZE(items) / 8;
-		const unsigned char *memstr =
-			(unsigned char *)PyBytes_AS_STRING(items);
+        converted_items = PyList_New(itemcount);
+        if (converted_items == NULL)
+            return NULL;
+        for (i = 0; i < itemcount; i++) {
+            PyObject *pyfloat = PyFloat_FromDouble(
+                _PyFloat_Unpack4(&memstr[i * 4], le));
+            if (pyfloat == NULL) {
+                Py_DECREF(converted_items);
+                return NULL;
+            }
+            PyList_SET_ITEM(converted_items, i, pyfloat);
+        }
+        break;
+    }
+    case IEEE_754_DOUBLE_LE:
+    case IEEE_754_DOUBLE_BE: {
+        int i;
+        int le = (mformat_code == IEEE_754_DOUBLE_LE) ? 1 : 0;
+        Py_ssize_t itemcount = Py_SIZE(items) / 8;
+        const unsigned char *memstr =
+            (unsigned char *)PyBytes_AS_STRING(items);
 
-		converted_items = PyList_New(itemcount);
-		if (converted_items == NULL)
-			return NULL;
-		for (i = 0; i < itemcount; i++) {
-			PyObject *pyfloat = PyFloat_FromDouble(
-				_PyFloat_Unpack8(&memstr[i * 8], le));
-			if (pyfloat == NULL) {
-				Py_DECREF(converted_items);
-				return NULL;
-			}
-			PyList_SET_ITEM(converted_items, i, pyfloat);
-		}
-		break;
-	}
-	case UTF16_LE:
-	case UTF16_BE: {
-		int byteorder = (mformat_code == UTF16_LE) ? -1 : 1;
-		converted_items = PyUnicode_DecodeUTF16(
-			PyBytes_AS_STRING(items), Py_SIZE(items),
-			"strict", &byteorder);
-		if (converted_items == NULL)
-			return NULL;
-		break;
-	}
-	case UTF32_LE:
-	case UTF32_BE: {
-		int byteorder = (mformat_code == UTF32_LE) ? -1 : 1;
-		converted_items = PyUnicode_DecodeUTF32(
-			PyBytes_AS_STRING(items), Py_SIZE(items),
-			"strict", &byteorder);
-		if (converted_items == NULL)
-			return NULL;
-		break;
-	}
+        converted_items = PyList_New(itemcount);
+        if (converted_items == NULL)
+            return NULL;
+        for (i = 0; i < itemcount; i++) {
+            PyObject *pyfloat = PyFloat_FromDouble(
+                _PyFloat_Unpack8(&memstr[i * 8], le));
+            if (pyfloat == NULL) {
+                Py_DECREF(converted_items);
+                return NULL;
+            }
+            PyList_SET_ITEM(converted_items, i, pyfloat);
+        }
+        break;
+    }
+    case UTF16_LE:
+    case UTF16_BE: {
+        int byteorder = (mformat_code == UTF16_LE) ? -1 : 1;
+        converted_items = PyUnicode_DecodeUTF16(
+            PyBytes_AS_STRING(items), Py_SIZE(items),
+            "strict", &byteorder);
+        if (converted_items == NULL)
+            return NULL;
+        break;
+    }
+    case UTF32_LE:
+    case UTF32_BE: {
+        int byteorder = (mformat_code == UTF32_LE) ? -1 : 1;
+        converted_items = PyUnicode_DecodeUTF32(
+            PyBytes_AS_STRING(items), Py_SIZE(items),
+            "strict", &byteorder);
+        if (converted_items == NULL)
+            return NULL;
+        break;
+    }
 
-	case UNSIGNED_INT8:
-	case SIGNED_INT8:
-	case UNSIGNED_INT16_LE:
-	case UNSIGNED_INT16_BE:
-	case SIGNED_INT16_LE:
-	case SIGNED_INT16_BE:
-	case UNSIGNED_INT32_LE:
-	case UNSIGNED_INT32_BE:
-	case SIGNED_INT32_LE:
-	case SIGNED_INT32_BE:
-	case UNSIGNED_INT64_LE:
-	case UNSIGNED_INT64_BE:
-	case SIGNED_INT64_LE:
-	case SIGNED_INT64_BE: {
-		int i;
-		const struct mformatdescr mf_descr =
-			mformat_descriptors[mformat_code];
-		Py_ssize_t itemcount = Py_SIZE(items) / mf_descr.size;
-		const unsigned char *memstr =
-			(unsigned char *)PyBytes_AS_STRING(items);
-		struct arraydescr *descr;
+    case UNSIGNED_INT8:
+    case SIGNED_INT8:
+    case UNSIGNED_INT16_LE:
+    case UNSIGNED_INT16_BE:
+    case SIGNED_INT16_LE:
+    case SIGNED_INT16_BE:
+    case UNSIGNED_INT32_LE:
+    case UNSIGNED_INT32_BE:
+    case SIGNED_INT32_LE:
+    case SIGNED_INT32_BE:
+    case UNSIGNED_INT64_LE:
+    case UNSIGNED_INT64_BE:
+    case SIGNED_INT64_LE:
+    case SIGNED_INT64_BE: {
+        int i;
+        const struct mformatdescr mf_descr =
+            mformat_descriptors[mformat_code];
+        Py_ssize_t itemcount = Py_SIZE(items) / mf_descr.size;
+        const unsigned char *memstr =
+            (unsigned char *)PyBytes_AS_STRING(items);
+        struct arraydescr *descr;
 
-		/* If possible, try to pack array's items using a data type
-		 * that fits better. This may result in an array with narrower
-		 * or wider elements.
-		 *
-		 * For example, if a 32-bit machine pickles a L-code array of
-		 * unsigned longs, then the array will be unpickled by 64-bit
-		 * machine as an I-code array of unsigned ints.
-		 *
-		 * XXX: Is it possible to write a unit test for this?
-		 */
-		for (descr = descriptors; descr->typecode != '\0'; descr++) {
-			if (descr->is_integer_type &&
-			    descr->itemsize == mf_descr.size &&
-			    descr->is_signed == mf_descr.is_signed)
-				typecode = descr->typecode;
-		}
+        /* If possible, try to pack array's items using a data type
+         * that fits better. This may result in an array with narrower
+         * or wider elements.
+         *
+         * For example, if a 32-bit machine pickles a L-code array of
+         * unsigned longs, then the array will be unpickled by 64-bit
+         * machine as an I-code array of unsigned ints.
+         *
+         * XXX: Is it possible to write a unit test for this?
+         */
+        for (descr = descriptors; descr->typecode != '\0'; descr++) {
+            if (descr->is_integer_type &&
+                descr->itemsize == mf_descr.size &&
+                descr->is_signed == mf_descr.is_signed)
+                typecode = descr->typecode;
+        }
 
-		converted_items = PyList_New(itemcount);
-		if (converted_items == NULL)
-			return NULL;
-		for (i = 0; i < itemcount; i++) {
-			PyObject *pylong;
+        converted_items = PyList_New(itemcount);
+        if (converted_items == NULL)
+            return NULL;
+        for (i = 0; i < itemcount; i++) {
+            PyObject *pylong;
 
-			pylong = _PyLong_FromByteArray(
-				&memstr[i * mf_descr.size],
-				mf_descr.size,
-				!mf_descr.is_big_endian,
-				mf_descr.is_signed);
-			if (pylong == NULL) {
-				Py_DECREF(converted_items);
-				return NULL;
-			}
-			PyList_SET_ITEM(converted_items, i, pylong);
-		}
-		break;
-	}
-	case UNKNOWN_FORMAT:
-		/* Impossible, but needed to shut up GCC about the unhandled
-		 * enumeration value.
-		 */
-	default:
-		PyErr_BadArgument();
-		return NULL;
-	}
+            pylong = _PyLong_FromByteArray(
+                &memstr[i * mf_descr.size],
+                mf_descr.size,
+                !mf_descr.is_big_endian,
+                mf_descr.is_signed);
+            if (pylong == NULL) {
+                Py_DECREF(converted_items);
+                return NULL;
+            }
+            PyList_SET_ITEM(converted_items, i, pylong);
+        }
+        break;
+    }
+    case UNKNOWN_FORMAT:
+        /* Impossible, but needed to shut up GCC about the unhandled
+         * enumeration value.
+         */
+    default:
+        PyErr_BadArgument();
+        return NULL;
+    }
 
-	result = make_array(arraytype, typecode, converted_items);
-	Py_DECREF(converted_items);
-	return result;
+    result = make_array(arraytype, typecode, converted_items);
+    Py_DECREF(converted_items);
+    return result;
 }
 
 static PyObject *
 array_reduce_ex(arrayobject *array, PyObject *value)
 {
-	PyObject *dict;
-	PyObject *result;
-	PyObject *array_str;
-	int typecode = array->ob_descr->typecode;
-	int mformat_code;
-	static PyObject *array_reconstructor = NULL;
-	long protocol;
+    PyObject *dict;
+    PyObject *result;
+    PyObject *array_str;
+    int typecode = array->ob_descr->typecode;
+    int mformat_code;
+    static PyObject *array_reconstructor = NULL;
+    long protocol;
 
-	if (array_reconstructor == NULL) {
-		PyObject *array_module = PyImport_ImportModule("array");
-		if (array_module == NULL)
-			return NULL;
-		array_reconstructor = PyObject_GetAttrString(
-			array_module,
-			"_array_reconstructor");
-		Py_DECREF(array_module);
-		if (array_reconstructor == NULL)
-			return NULL;
-	}
+    if (array_reconstructor == NULL) {
+        PyObject *array_module = PyImport_ImportModule("array");
+        if (array_module == NULL)
+            return NULL;
+        array_reconstructor = PyObject_GetAttrString(
+            array_module,
+            "_array_reconstructor");
+        Py_DECREF(array_module);
+        if (array_reconstructor == NULL)
+            return NULL;
+    }
 
-	if (!PyLong_Check(value)) {
-		PyErr_SetString(PyExc_TypeError,
-				"__reduce_ex__ argument should an integer");
-		return NULL;
-	}
-	protocol = PyLong_AsLong(value);
-	if (protocol == -1 && PyErr_Occurred())
-		return NULL;
+    if (!PyLong_Check(value)) {
+        PyErr_SetString(PyExc_TypeError,
+                        "__reduce_ex__ argument should an integer");
+        return NULL;
+    }
+    protocol = PyLong_AsLong(value);
+    if (protocol == -1 && PyErr_Occurred())
+        return NULL;
 
-	dict = PyObject_GetAttrString((PyObject *)array, "__dict__");
-	if (dict == NULL) {
-		if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-			return NULL;
-		PyErr_Clear();
-		dict = Py_None;
-		Py_INCREF(dict);
-	}
+    dict = PyObject_GetAttrString((PyObject *)array, "__dict__");
+    if (dict == NULL) {
+        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
+            return NULL;
+        PyErr_Clear();
+        dict = Py_None;
+        Py_INCREF(dict);
+    }
 
-	mformat_code = typecode_to_mformat_code(typecode);
-	if (mformat_code == UNKNOWN_FORMAT || protocol < 3) {
-		/* Convert the array to a list if we got something weird
-		 * (e.g., non-IEEE floats), or we are pickling the array using
-		 * a Python 2.x compatible protocol.
-		 *
-		 * It is necessary to use a list representation for Python 2.x
-		 * compatible pickle protocol, since Python 2's str objects
-		 * are unpickled as unicode by Python 3. Thus it is impossible
-		 * to make arrays unpicklable by Python 3 by using their memory
-		 * representation, unless we resort to ugly hacks such as
-		 * coercing unicode objects to bytes in array_reconstructor.
-		 */
-		PyObject *list;
-		list = array_tolist(array, NULL);
-		if (list == NULL) {
-			Py_DECREF(dict);
-			return NULL;
-		}
-		result = Py_BuildValue(
-			"O(CO)O", Py_TYPE(array), typecode, list, dict);
-		Py_DECREF(list);
-		Py_DECREF(dict);
-		return result;
-	}
+    mformat_code = typecode_to_mformat_code(typecode);
+    if (mformat_code == UNKNOWN_FORMAT || protocol < 3) {
+        /* Convert the array to a list if we got something weird
+         * (e.g., non-IEEE floats), or we are pickling the array using
+         * a Python 2.x compatible protocol.
+         *
+         * It is necessary to use a list representation for Python 2.x
+         * compatible pickle protocol, since Python 2's str objects
+         * are unpickled as unicode by Python 3. Thus it is impossible
+         * to make arrays unpicklable by Python 3 by using their memory
+         * representation, unless we resort to ugly hacks such as
+         * coercing unicode objects to bytes in array_reconstructor.
+         */
+        PyObject *list;
+        list = array_tolist(array, NULL);
+        if (list == NULL) {
+            Py_DECREF(dict);
+            return NULL;
+        }
+        result = Py_BuildValue(
+            "O(CO)O", Py_TYPE(array), typecode, list, dict);
+        Py_DECREF(list);
+        Py_DECREF(dict);
+        return result;
+    }
 
-	array_str = array_tostring(array, NULL);
-	if (array_str == NULL) {
-		Py_DECREF(dict);
-		return NULL;
-	}
-	result = Py_BuildValue(
-		"O(OCiN)O", array_reconstructor, Py_TYPE(array), typecode,
-		mformat_code, array_str, dict);
-	Py_DECREF(dict);
-	return result;
+    array_str = array_tostring(array, NULL);
+    if (array_str == NULL) {
+        Py_DECREF(dict);
+        return NULL;
+    }
+    result = Py_BuildValue(
+        "O(OCiN)O", array_reconstructor, Py_TYPE(array), typecode,
+        mformat_code, array_str, dict);
+    Py_DECREF(dict);
+    return result;
 }
 
 PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
@@ -1944,313 +1944,313 @@
 static PyObject *
 array_get_typecode(arrayobject *a, void *closure)
 {
-	char tc = a->ob_descr->typecode;
-	return PyUnicode_FromStringAndSize(&tc, 1);
+    char tc = a->ob_descr->typecode;
+    return PyUnicode_FromStringAndSize(&tc, 1);
 }
 
 static PyObject *
 array_get_itemsize(arrayobject *a, void *closure)
 {
-	return PyLong_FromLong((long)a->ob_descr->itemsize);
+    return PyLong_FromLong((long)a->ob_descr->itemsize);
 }
 
 static PyGetSetDef array_getsets [] = {
-	{"typecode", (getter) array_get_typecode, NULL,
-	 "the typecode character used to create the array"},
-	{"itemsize", (getter) array_get_itemsize, NULL,
-	 "the size, in bytes, of one array item"},
-	{NULL}
+    {"typecode", (getter) array_get_typecode, NULL,
+     "the typecode character used to create the array"},
+    {"itemsize", (getter) array_get_itemsize, NULL,
+     "the size, in bytes, of one array item"},
+    {NULL}
 };
 
 static PyMethodDef array_methods[] = {
-	{"append",	(PyCFunction)array_append,	METH_O,
-	 append_doc},
-	{"buffer_info", (PyCFunction)array_buffer_info, METH_NOARGS,
-	 buffer_info_doc},
-	{"byteswap",	(PyCFunction)array_byteswap,	METH_NOARGS,
-	 byteswap_doc},
-	{"__copy__",	(PyCFunction)array_copy,	METH_NOARGS,
-	 copy_doc},
-	{"count",	(PyCFunction)array_count,	METH_O,
-	 count_doc},
-	{"__deepcopy__",(PyCFunction)array_copy,	METH_O,
-	 copy_doc},
-	{"extend",      (PyCFunction)array_extend,	METH_O,
-	 extend_doc},
-	{"fromfile",	(PyCFunction)array_fromfile,	METH_VARARGS,
-	 fromfile_doc},
-	{"fromlist",	(PyCFunction)array_fromlist,	METH_O,
-	 fromlist_doc},
-	{"fromstring",	(PyCFunction)array_fromstring,	METH_VARARGS,
-	 fromstring_doc},
-	{"fromunicode",	(PyCFunction)array_fromunicode,	METH_VARARGS,
-	 fromunicode_doc},
-	{"index",	(PyCFunction)array_index,	METH_O,
-	 index_doc},
-	{"insert",	(PyCFunction)array_insert,	METH_VARARGS,
-	 insert_doc},
-	{"pop",		(PyCFunction)array_pop,		METH_VARARGS,
-	 pop_doc},
-	{"__reduce_ex__", (PyCFunction)array_reduce_ex,	METH_O,
-	 reduce_doc},
-	{"remove",	(PyCFunction)array_remove,	METH_O,
-	 remove_doc},
-	{"reverse",	(PyCFunction)array_reverse,	METH_NOARGS,
-	 reverse_doc},
-/*	{"sort",	(PyCFunction)array_sort,	METH_VARARGS,
-	sort_doc},*/
-	{"tofile",	(PyCFunction)array_tofile,	METH_O,
-	 tofile_doc},
-	{"tolist",	(PyCFunction)array_tolist,	METH_NOARGS,
-	 tolist_doc},
-	{"tostring",	(PyCFunction)array_tostring,	METH_NOARGS,
-	 tostring_doc},
-	{"tounicode",   (PyCFunction)array_tounicode,	METH_NOARGS,
-	 tounicode_doc},
-	{NULL,		NULL}		/* sentinel */
+    {"append",          (PyCFunction)array_append,      METH_O,
+     append_doc},
+    {"buffer_info", (PyCFunction)array_buffer_info, METH_NOARGS,
+     buffer_info_doc},
+    {"byteswap",        (PyCFunction)array_byteswap,    METH_NOARGS,
+     byteswap_doc},
+    {"__copy__",        (PyCFunction)array_copy,        METH_NOARGS,
+     copy_doc},
+    {"count",           (PyCFunction)array_count,       METH_O,
+     count_doc},
+    {"__deepcopy__",(PyCFunction)array_copy,            METH_O,
+     copy_doc},
+    {"extend",      (PyCFunction)array_extend,          METH_O,
+     extend_doc},
+    {"fromfile",        (PyCFunction)array_fromfile,    METH_VARARGS,
+     fromfile_doc},
+    {"fromlist",        (PyCFunction)array_fromlist,    METH_O,
+     fromlist_doc},
+    {"fromstring",      (PyCFunction)array_fromstring,  METH_VARARGS,
+     fromstring_doc},
+    {"fromunicode",     (PyCFunction)array_fromunicode, METH_VARARGS,
+     fromunicode_doc},
+    {"index",           (PyCFunction)array_index,       METH_O,
+     index_doc},
+    {"insert",          (PyCFunction)array_insert,      METH_VARARGS,
+     insert_doc},
+    {"pop",             (PyCFunction)array_pop,         METH_VARARGS,
+     pop_doc},
+    {"__reduce_ex__", (PyCFunction)array_reduce_ex,     METH_O,
+     reduce_doc},
+    {"remove",          (PyCFunction)array_remove,      METH_O,
+     remove_doc},
+    {"reverse",         (PyCFunction)array_reverse,     METH_NOARGS,
+     reverse_doc},
+/*      {"sort",        (PyCFunction)array_sort,        METH_VARARGS,
+    sort_doc},*/
+    {"tofile",          (PyCFunction)array_tofile,      METH_O,
+     tofile_doc},
+    {"tolist",          (PyCFunction)array_tolist,      METH_NOARGS,
+     tolist_doc},
+    {"tostring",        (PyCFunction)array_tostring,    METH_NOARGS,
+     tostring_doc},
+    {"tounicode",   (PyCFunction)array_tounicode,       METH_NOARGS,
+     tounicode_doc},
+    {NULL,              NULL}           /* sentinel */
 };
 
 static PyObject *
 array_repr(arrayobject *a)
 {
-	char typecode;
-	PyObject *s, *v = NULL;
-	Py_ssize_t len;
+    char typecode;
+    PyObject *s, *v = NULL;
+    Py_ssize_t len;
 
-	len = Py_SIZE(a);
-	typecode = a->ob_descr->typecode;
-	if (len == 0) {
-		return PyUnicode_FromFormat("array('%c')", typecode);
-	}
-        if ((typecode == 'u'))
-		v = array_tounicode(a, NULL);
-	else
-		v = array_tolist(a, NULL);
+    len = Py_SIZE(a);
+    typecode = a->ob_descr->typecode;
+    if (len == 0) {
+        return PyUnicode_FromFormat("array('%c')", typecode);
+    }
+    if ((typecode == 'u'))
+        v = array_tounicode(a, NULL);
+    else
+        v = array_tolist(a, NULL);
 
-	s = PyUnicode_FromFormat("array('%c', %R)", typecode, v);
-	Py_DECREF(v);
-	return s;
+    s = PyUnicode_FromFormat("array('%c', %R)", typecode, v);
+    Py_DECREF(v);
+    return s;
 }
 
 static PyObject*
 array_subscr(arrayobject* self, PyObject* item)
 {
-	if (PyIndex_Check(item)) {
-		Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-		if (i==-1 && PyErr_Occurred()) {
-			return NULL;
-		}
-		if (i < 0)
-			i += Py_SIZE(self);
-		return array_item(self, i);
-	}
-	else if (PySlice_Check(item)) {
-		Py_ssize_t start, stop, step, slicelength, cur, i;
-		PyObject* result;
-		arrayobject* ar;
-		int itemsize = self->ob_descr->itemsize;
+    if (PyIndex_Check(item)) {
+        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
+        if (i==-1 && PyErr_Occurred()) {
+            return NULL;
+        }
+        if (i < 0)
+            i += Py_SIZE(self);
+        return array_item(self, i);
+    }
+    else if (PySlice_Check(item)) {
+        Py_ssize_t start, stop, step, slicelength, cur, i;
+        PyObject* result;
+        arrayobject* ar;
+        int itemsize = self->ob_descr->itemsize;
 
-		if (PySlice_GetIndicesEx((PySliceObject*)item, Py_SIZE(self),
-				 &start, &stop, &step, &slicelength) < 0) {
-			return NULL;
-		}
+        if (PySlice_GetIndicesEx((PySliceObject*)item, Py_SIZE(self),
+                         &start, &stop, &step, &slicelength) < 0) {
+            return NULL;
+        }
 
-		if (slicelength <= 0) {
-			return newarrayobject(&Arraytype, 0, self->ob_descr);
-		}
-		else if (step == 1) {
-			PyObject *result = newarrayobject(&Arraytype,
-						slicelength, self->ob_descr);
-			if (result == NULL)
-				return NULL;
-			memcpy(((arrayobject *)result)->ob_item,
-			       self->ob_item + start * itemsize,
-			       slicelength * itemsize);
-			return result;
-		}
-		else {
-			result = newarrayobject(&Arraytype, slicelength, self->ob_descr);
-			if (!result) return NULL;
+        if (slicelength <= 0) {
+            return newarrayobject(&Arraytype, 0, self->ob_descr);
+        }
+        else if (step == 1) {
+            PyObject *result = newarrayobject(&Arraytype,
+                                    slicelength, self->ob_descr);
+            if (result == NULL)
+                return NULL;
+            memcpy(((arrayobject *)result)->ob_item,
+                   self->ob_item + start * itemsize,
+                   slicelength * itemsize);
+            return result;
+        }
+        else {
+            result = newarrayobject(&Arraytype, slicelength, self->ob_descr);
+            if (!result) return NULL;
 
-			ar = (arrayobject*)result;
+            ar = (arrayobject*)result;
 
-			for (cur = start, i = 0; i < slicelength; 
-			     cur += step, i++) {
-				memcpy(ar->ob_item + i*itemsize,
-				       self->ob_item + cur*itemsize,
-				       itemsize);
-			}
-			
-			return result;
-		}		
-	}
-	else {
-		PyErr_SetString(PyExc_TypeError, 
-				"array indices must be integers");
-		return NULL;
-	}
+            for (cur = start, i = 0; i < slicelength;
+                 cur += step, i++) {
+                memcpy(ar->ob_item + i*itemsize,
+                       self->ob_item + cur*itemsize,
+                       itemsize);
+            }
+
+            return result;
+        }
+    }
+    else {
+        PyErr_SetString(PyExc_TypeError,
+                        "array indices must be integers");
+        return NULL;
+    }
 }
 
 static int
 array_ass_subscr(arrayobject* self, PyObject* item, PyObject* value)
 {
-	Py_ssize_t start, stop, step, slicelength, needed;
-	arrayobject* other;
-	int itemsize;
+    Py_ssize_t start, stop, step, slicelength, needed;
+    arrayobject* other;
+    int itemsize;
 
-	if (PyIndex_Check(item)) {
-		Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-		
-		if (i == -1 && PyErr_Occurred())
-			return -1;
-		if (i < 0)
-			i += Py_SIZE(self);
-		if (i < 0 || i >= Py_SIZE(self)) {
-			PyErr_SetString(PyExc_IndexError,
-				"array assignment index out of range");
-			return -1;
-		}
-		if (value == NULL) {
-			/* Fall through to slice assignment */
-			start = i;
-			stop = i + 1;
-			step = 1;
-			slicelength = 1;
-		}
-		else
-			return (*self->ob_descr->setitem)(self, i, value);
-	}
-	else if (PySlice_Check(item)) {
-		if (PySlice_GetIndicesEx((PySliceObject *)item,
-					 Py_SIZE(self), &start, &stop,
-					 &step, &slicelength) < 0) {
-			return -1;
-		}
-	}
-	else {
-		PyErr_SetString(PyExc_TypeError,
-				"array indices must be integer");
-		return -1;
-	}
-	if (value == NULL) {
-		other = NULL;
-		needed = 0;
-	}
-	else if (array_Check(value)) {
-		other = (arrayobject *)value;
-		needed = Py_SIZE(other);
-		if (self == other) {
-			/* Special case "self[i:j] = self" -- copy self first */
-			int ret;
-			value = array_slice(other, 0, needed);
-			if (value == NULL)
-				return -1;
-			ret = array_ass_subscr(self, item, value);
-			Py_DECREF(value);
-			return ret;
-		}
-		if (other->ob_descr != self->ob_descr) {
-			PyErr_BadArgument();
-			return -1;
-		}
-	}
-	else {
-		PyErr_Format(PyExc_TypeError,
-	     "can only assign array (not \"%.200s\") to array slice",
-			     Py_TYPE(value)->tp_name);
-		return -1;
-	}
-	itemsize = self->ob_descr->itemsize;
-	/* for 'a[2:1] = ...', the insertion point is 'start', not 'stop' */
-	if ((step > 0 && stop < start) ||
-	    (step < 0 && stop > start))
-		stop = start;
+    if (PyIndex_Check(item)) {
+        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
 
-	/* Issue #4509: If the array has exported buffers and the slice
-	   assignment would change the size of the array, fail early to make
-	   sure we don't modify it. */
-	if ((needed == 0 || slicelength != needed) && self->ob_exports > 0) {
-		PyErr_SetString(PyExc_BufferError, 
-			"cannot resize an array that is exporting buffers");
-		return -1;
-	}
+        if (i == -1 && PyErr_Occurred())
+            return -1;
+        if (i < 0)
+            i += Py_SIZE(self);
+        if (i < 0 || i >= Py_SIZE(self)) {
+            PyErr_SetString(PyExc_IndexError,
+                "array assignment index out of range");
+            return -1;
+        }
+        if (value == NULL) {
+            /* Fall through to slice assignment */
+            start = i;
+            stop = i + 1;
+            step = 1;
+            slicelength = 1;
+        }
+        else
+            return (*self->ob_descr->setitem)(self, i, value);
+    }
+    else if (PySlice_Check(item)) {
+        if (PySlice_GetIndicesEx((PySliceObject *)item,
+                                 Py_SIZE(self), &start, &stop,
+                                 &step, &slicelength) < 0) {
+            return -1;
+        }
+    }
+    else {
+        PyErr_SetString(PyExc_TypeError,
+                        "array indices must be integer");
+        return -1;
+    }
+    if (value == NULL) {
+        other = NULL;
+        needed = 0;
+    }
+    else if (array_Check(value)) {
+        other = (arrayobject *)value;
+        needed = Py_SIZE(other);
+        if (self == other) {
+            /* Special case "self[i:j] = self" -- copy self first */
+            int ret;
+            value = array_slice(other, 0, needed);
+            if (value == NULL)
+                return -1;
+            ret = array_ass_subscr(self, item, value);
+            Py_DECREF(value);
+            return ret;
+        }
+        if (other->ob_descr != self->ob_descr) {
+            PyErr_BadArgument();
+            return -1;
+        }
+    }
+    else {
+        PyErr_Format(PyExc_TypeError,
+         "can only assign array (not \"%.200s\") to array slice",
+                         Py_TYPE(value)->tp_name);
+        return -1;
+    }
+    itemsize = self->ob_descr->itemsize;
+    /* for 'a[2:1] = ...', the insertion point is 'start', not 'stop' */
+    if ((step > 0 && stop < start) ||
+        (step < 0 && stop > start))
+        stop = start;
 
-	if (step == 1) {
-		if (slicelength > needed) {
-			memmove(self->ob_item + (start + needed) * itemsize,
-				self->ob_item + stop * itemsize,
-				(Py_SIZE(self) - stop) * itemsize);
-			if (array_resize(self, Py_SIZE(self) +
-				needed - slicelength) < 0)
-				return -1;
-		}
-		else if (slicelength < needed) {
-			if (array_resize(self, Py_SIZE(self) +
-				needed - slicelength) < 0)
-				return -1;
-			memmove(self->ob_item + (start + needed) * itemsize,
-				self->ob_item + stop * itemsize,
-				(Py_SIZE(self) - start - needed) * itemsize);
-		}
-		if (needed > 0)
-			memcpy(self->ob_item + start * itemsize,
-			       other->ob_item, needed * itemsize);
-		return 0;
-	}
-	else if (needed == 0) {
-		/* Delete slice */
-		size_t cur;
-		Py_ssize_t i;
+    /* Issue #4509: If the array has exported buffers and the slice
+       assignment would change the size of the array, fail early to make
+       sure we don't modify it. */
+    if ((needed == 0 || slicelength != needed) && self->ob_exports > 0) {
+        PyErr_SetString(PyExc_BufferError,
+            "cannot resize an array that is exporting buffers");
+        return -1;
+    }
 
-		if (step < 0) {
-			stop = start + 1;
-			start = stop + step * (slicelength - 1) - 1;
-			step = -step;
-		}
-		for (cur = start, i = 0; i < slicelength;
-		     cur += step, i++) {
-			Py_ssize_t lim = step - 1;
+    if (step == 1) {
+        if (slicelength > needed) {
+            memmove(self->ob_item + (start + needed) * itemsize,
+                self->ob_item + stop * itemsize,
+                (Py_SIZE(self) - stop) * itemsize);
+            if (array_resize(self, Py_SIZE(self) +
+                needed - slicelength) < 0)
+                return -1;
+        }
+        else if (slicelength < needed) {
+            if (array_resize(self, Py_SIZE(self) +
+                needed - slicelength) < 0)
+                return -1;
+            memmove(self->ob_item + (start + needed) * itemsize,
+                self->ob_item + stop * itemsize,
+                (Py_SIZE(self) - start - needed) * itemsize);
+        }
+        if (needed > 0)
+            memcpy(self->ob_item + start * itemsize,
+                   other->ob_item, needed * itemsize);
+        return 0;
+    }
+    else if (needed == 0) {
+        /* Delete slice */
+        size_t cur;
+        Py_ssize_t i;
 
-			if (cur + step >= (size_t)Py_SIZE(self))
-				lim = Py_SIZE(self) - cur - 1;
-			memmove(self->ob_item + (cur - i) * itemsize,
-				self->ob_item + (cur + 1) * itemsize,
-				lim * itemsize);
-		}
-		cur = start + slicelength * step;
-		if (cur < (size_t)Py_SIZE(self)) {
-			memmove(self->ob_item + (cur-slicelength) * itemsize,
-				self->ob_item + cur * itemsize,
-				(Py_SIZE(self) - cur) * itemsize);
-		}
-		if (array_resize(self, Py_SIZE(self) - slicelength) < 0)
-			return -1;
-		return 0;
-	}
-	else {
-		Py_ssize_t cur, i;
+        if (step < 0) {
+            stop = start + 1;
+            start = stop + step * (slicelength - 1) - 1;
+            step = -step;
+        }
+        for (cur = start, i = 0; i < slicelength;
+             cur += step, i++) {
+            Py_ssize_t lim = step - 1;
 
-		if (needed != slicelength) {
-			PyErr_Format(PyExc_ValueError,
-				"attempt to assign array of size %zd "
-				"to extended slice of size %zd",
-				needed, slicelength);
-			return -1;
-		}
-		for (cur = start, i = 0; i < slicelength;
-		     cur += step, i++) {
-			memcpy(self->ob_item + cur * itemsize,
-			       other->ob_item + i * itemsize,
-			       itemsize);
-		}
-		return 0;
-	}
+            if (cur + step >= (size_t)Py_SIZE(self))
+                lim = Py_SIZE(self) - cur - 1;
+            memmove(self->ob_item + (cur - i) * itemsize,
+                self->ob_item + (cur + 1) * itemsize,
+                lim * itemsize);
+        }
+        cur = start + slicelength * step;
+        if (cur < (size_t)Py_SIZE(self)) {
+            memmove(self->ob_item + (cur-slicelength) * itemsize,
+                self->ob_item + cur * itemsize,
+                (Py_SIZE(self) - cur) * itemsize);
+        }
+        if (array_resize(self, Py_SIZE(self) - slicelength) < 0)
+            return -1;
+        return 0;
+    }
+    else {
+        Py_ssize_t cur, i;
+
+        if (needed != slicelength) {
+            PyErr_Format(PyExc_ValueError,
+                "attempt to assign array of size %zd "
+                "to extended slice of size %zd",
+                needed, slicelength);
+            return -1;
+        }
+        for (cur = start, i = 0; i < slicelength;
+             cur += step, i++) {
+            memcpy(self->ob_item + cur * itemsize,
+                   other->ob_item + i * itemsize,
+                   itemsize);
+        }
+        return 0;
+    }
 }
 
 static PyMappingMethods array_as_mapping = {
-	(lenfunc)array_length,
-	(binaryfunc)array_subscr,
-	(objobjargproc)array_ass_subscr
+    (lenfunc)array_length,
+    (binaryfunc)array_subscr,
+    (objobjargproc)array_ass_subscr
 };
 
 static const void *emptybuf = "";
@@ -2259,173 +2259,173 @@
 static int
 array_buffer_getbuf(arrayobject *self, Py_buffer *view, int flags)
 {
-        if (view==NULL) goto finish;
+    if (view==NULL) goto finish;
 
-        view->buf = (void *)self->ob_item;
-	view->obj = (PyObject*)self;
-	Py_INCREF(self);
-        if (view->buf == NULL)
-                view->buf = (void *)emptybuf;
-        view->len = (Py_SIZE(self)) * self->ob_descr->itemsize;
-        view->readonly = 0;
-        view->ndim = 1;
-        view->itemsize = self->ob_descr->itemsize;
-        view->suboffsets = NULL;
-        view->shape = NULL;
-        if ((flags & PyBUF_ND)==PyBUF_ND) {
-                view->shape = &((Py_SIZE(self)));
-        }
-        view->strides = NULL;
-        if ((flags & PyBUF_STRIDES)==PyBUF_STRIDES)
-                view->strides = &(view->itemsize);
-        view->format = NULL;
-        view->internal = NULL;
-        if ((flags & PyBUF_FORMAT) == PyBUF_FORMAT) {
-                view->format = self->ob_descr->formats;
+    view->buf = (void *)self->ob_item;
+    view->obj = (PyObject*)self;
+    Py_INCREF(self);
+    if (view->buf == NULL)
+        view->buf = (void *)emptybuf;
+    view->len = (Py_SIZE(self)) * self->ob_descr->itemsize;
+    view->readonly = 0;
+    view->ndim = 1;
+    view->itemsize = self->ob_descr->itemsize;
+    view->suboffsets = NULL;
+    view->shape = NULL;
+    if ((flags & PyBUF_ND)==PyBUF_ND) {
+        view->shape = &((Py_SIZE(self)));
+    }
+    view->strides = NULL;
+    if ((flags & PyBUF_STRIDES)==PyBUF_STRIDES)
+        view->strides = &(view->itemsize);
+    view->format = NULL;
+    view->internal = NULL;
+    if ((flags & PyBUF_FORMAT) == PyBUF_FORMAT) {
+        view->format = self->ob_descr->formats;
 #ifdef Py_UNICODE_WIDE
-		if (self->ob_descr->typecode == 'u') {
-			view->format = "w";
-		}
-#endif
+        if (self->ob_descr->typecode == 'u') {
+            view->format = "w";
         }
+#endif
+    }
 
  finish:
-        self->ob_exports++;
-        return 0;
+    self->ob_exports++;
+    return 0;
 }
 
 static void
 array_buffer_relbuf(arrayobject *self, Py_buffer *view)
 {
-        self->ob_exports--;
+    self->ob_exports--;
 }
 
 static PySequenceMethods array_as_sequence = {
-	(lenfunc)array_length,		        /*sq_length*/
-	(binaryfunc)array_concat,               /*sq_concat*/
-	(ssizeargfunc)array_repeat,		/*sq_repeat*/
-	(ssizeargfunc)array_item,		        /*sq_item*/
-	0,					/*sq_slice*/
-	(ssizeobjargproc)array_ass_item,		/*sq_ass_item*/
-	0,					/*sq_ass_slice*/
-	(objobjproc)array_contains,		/*sq_contains*/
-	(binaryfunc)array_inplace_concat,	/*sq_inplace_concat*/
-	(ssizeargfunc)array_inplace_repeat	/*sq_inplace_repeat*/
+    (lenfunc)array_length,                      /*sq_length*/
+    (binaryfunc)array_concat,               /*sq_concat*/
+    (ssizeargfunc)array_repeat,                 /*sq_repeat*/
+    (ssizeargfunc)array_item,                           /*sq_item*/
+    0,                                          /*sq_slice*/
+    (ssizeobjargproc)array_ass_item,                    /*sq_ass_item*/
+    0,                                          /*sq_ass_slice*/
+    (objobjproc)array_contains,                 /*sq_contains*/
+    (binaryfunc)array_inplace_concat,           /*sq_inplace_concat*/
+    (ssizeargfunc)array_inplace_repeat          /*sq_inplace_repeat*/
 };
 
 static PyBufferProcs array_as_buffer = {
-        (getbufferproc)array_buffer_getbuf,
-        (releasebufferproc)array_buffer_relbuf
+    (getbufferproc)array_buffer_getbuf,
+    (releasebufferproc)array_buffer_relbuf
 };
 
 static PyObject *
 array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 {
-	int c;
-	PyObject *initial = NULL, *it = NULL;
-	struct arraydescr *descr;
-	
-	if (type == &Arraytype && !_PyArg_NoKeywords("array.array()", kwds))
-		return NULL;
+    int c;
+    PyObject *initial = NULL, *it = NULL;
+    struct arraydescr *descr;
 
-	if (!PyArg_ParseTuple(args, "C|O:array", &c, &initial))
-		return NULL;
+    if (type == &Arraytype && !_PyArg_NoKeywords("array.array()", kwds))
+        return NULL;
 
-	if (!(initial == NULL || PyList_Check(initial)
-	      || PyByteArray_Check(initial)
-	      || PyBytes_Check(initial)
-	      || PyTuple_Check(initial)
-	      || ((c=='u') && PyUnicode_Check(initial)))) {
-		it = PyObject_GetIter(initial);
-		if (it == NULL)
-			return NULL;
-		/* We set initial to NULL so that the subsequent code
-		   will create an empty array of the appropriate type
-		   and afterwards we can use array_iter_extend to populate
-		   the array.
-		*/
-		initial = NULL;
-	}
-	for (descr = descriptors; descr->typecode != '\0'; descr++) {
-		if (descr->typecode == c) {
-			PyObject *a;
-			Py_ssize_t len;
+    if (!PyArg_ParseTuple(args, "C|O:array", &c, &initial))
+        return NULL;
 
-			if (initial == NULL || !(PyList_Check(initial) 
-				|| PyTuple_Check(initial)))
-				len = 0;
-			else
-				len = PySequence_Size(initial);
+    if (!(initial == NULL || PyList_Check(initial)
+          || PyByteArray_Check(initial)
+          || PyBytes_Check(initial)
+          || PyTuple_Check(initial)
+          || ((c=='u') && PyUnicode_Check(initial)))) {
+        it = PyObject_GetIter(initial);
+        if (it == NULL)
+            return NULL;
+        /* We set initial to NULL so that the subsequent code
+           will create an empty array of the appropriate type
+           and afterwards we can use array_iter_extend to populate
+           the array.
+        */
+        initial = NULL;
+    }
+    for (descr = descriptors; descr->typecode != '\0'; descr++) {
+        if (descr->typecode == c) {
+            PyObject *a;
+            Py_ssize_t len;
 
-			a = newarrayobject(type, len, descr);
-			if (a == NULL)
-				return NULL;
+            if (initial == NULL || !(PyList_Check(initial)
+                || PyTuple_Check(initial)))
+                len = 0;
+            else
+                len = PySequence_Size(initial);
 
-			if (len > 0) {
-				Py_ssize_t i;
-				for (i = 0; i < len; i++) {
-					PyObject *v =
-					        PySequence_GetItem(initial, i);
-					if (v == NULL) {
-						Py_DECREF(a);
-						return NULL;
-					}
-					if (setarrayitem(a, i, v) != 0) {
-						Py_DECREF(v);
-						Py_DECREF(a);
-						return NULL;
-					}
-					Py_DECREF(v);
-				}
-			}
-			else if (initial != NULL && (PyByteArray_Check(initial) ||
-					   PyBytes_Check(initial))) {
-				PyObject *t_initial, *v;
-				t_initial = PyTuple_Pack(1, initial);
-				if (t_initial == NULL) {
-					Py_DECREF(a);
-					return NULL;
-				}
-				v = array_fromstring((arrayobject *)a,
-							 t_initial);
-				Py_DECREF(t_initial);
-				if (v == NULL) {
-					Py_DECREF(a);
-					return NULL;
-				}
-				Py_DECREF(v);
-			}
-			else if (initial != NULL && PyUnicode_Check(initial))  {
-				Py_ssize_t n = PyUnicode_GET_DATA_SIZE(initial);
-				if (n > 0) {
-					arrayobject *self = (arrayobject *)a;
-					char *item = self->ob_item;
-					item = (char *)PyMem_Realloc(item, n);
-					if (item == NULL) {
-						PyErr_NoMemory();
-						Py_DECREF(a);
-						return NULL;
-					}
-					self->ob_item = item;
-					Py_SIZE(self) = n / sizeof(Py_UNICODE);
-					memcpy(item, PyUnicode_AS_DATA(initial), n);
-					self->allocated = Py_SIZE(self);
-				}
-			}
-			if (it != NULL) {
-				if (array_iter_extend((arrayobject *)a, it) == -1) {
-					Py_DECREF(it);
-					Py_DECREF(a);
-					return NULL;
-				}
-				Py_DECREF(it);
-			}
-			return a;
-		}
-	}
-	PyErr_SetString(PyExc_ValueError,
-		"bad typecode (must be b, B, u, h, H, i, I, l, L, f or d)");
-	return NULL;
+            a = newarrayobject(type, len, descr);
+            if (a == NULL)
+                return NULL;
+
+            if (len > 0) {
+                Py_ssize_t i;
+                for (i = 0; i < len; i++) {
+                    PyObject *v =
+                        PySequence_GetItem(initial, i);
+                    if (v == NULL) {
+                        Py_DECREF(a);
+                        return NULL;
+                    }
+                    if (setarrayitem(a, i, v) != 0) {
+                        Py_DECREF(v);
+                        Py_DECREF(a);
+                        return NULL;
+                    }
+                    Py_DECREF(v);
+                }
+            }
+            else if (initial != NULL && (PyByteArray_Check(initial) ||
+                               PyBytes_Check(initial))) {
+                PyObject *t_initial, *v;
+                t_initial = PyTuple_Pack(1, initial);
+                if (t_initial == NULL) {
+                    Py_DECREF(a);
+                    return NULL;
+                }
+                v = array_fromstring((arrayobject *)a,
+                                         t_initial);
+                Py_DECREF(t_initial);
+                if (v == NULL) {
+                    Py_DECREF(a);
+                    return NULL;
+                }
+                Py_DECREF(v);
+            }
+            else if (initial != NULL && PyUnicode_Check(initial))  {
+                Py_ssize_t n = PyUnicode_GET_DATA_SIZE(initial);
+                if (n > 0) {
+                    arrayobject *self = (arrayobject *)a;
+                    char *item = self->ob_item;
+                    item = (char *)PyMem_Realloc(item, n);
+                    if (item == NULL) {
+                        PyErr_NoMemory();
+                        Py_DECREF(a);
+                        return NULL;
+                    }
+                    self->ob_item = item;
+                    Py_SIZE(self) = n / sizeof(Py_UNICODE);
+                    memcpy(item, PyUnicode_AS_DATA(initial), n);
+                    self->allocated = Py_SIZE(self);
+                }
+            }
+            if (it != NULL) {
+                if (array_iter_extend((arrayobject *)a, it) == -1) {
+                    Py_DECREF(it);
+                    Py_DECREF(a);
+                    return NULL;
+                }
+                Py_DECREF(it);
+            }
+            return a;
+        }
+    }
+    PyErr_SetString(PyExc_ValueError,
+        "bad typecode (must be b, B, u, h, H, i, I, l, L, f or d)");
+    return NULL;
 }
 
 
@@ -2496,55 +2496,55 @@
 static PyObject *array_iter(arrayobject *ao);
 
 static PyTypeObject Arraytype = {
-	PyVarObject_HEAD_INIT(NULL, 0)
-	"array.array",
-	sizeof(arrayobject),
-	0,
-	(destructor)array_dealloc,		/* tp_dealloc */
-	0,					/* tp_print */
-	0,					/* tp_getattr */
-	0,					/* tp_setattr */
-	0,					/* tp_reserved */
-	(reprfunc)array_repr,			/* tp_repr */
-	0,					/* tp_as_number*/
-	&array_as_sequence,			/* tp_as_sequence*/
-	&array_as_mapping,			/* tp_as_mapping*/
-	0, 					/* tp_hash */
-	0,					/* tp_call */
-	0,					/* tp_str */
-	PyObject_GenericGetAttr,		/* tp_getattro */
-	0,					/* tp_setattro */
-	&array_as_buffer,			/* tp_as_buffer*/
-	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-	arraytype_doc,				/* tp_doc */
- 	0,					/* tp_traverse */
-	0,					/* tp_clear */
-	array_richcompare,			/* tp_richcompare */
-	offsetof(arrayobject, weakreflist),	/* tp_weaklistoffset */
-	(getiterfunc)array_iter,		/* tp_iter */
-	0,					/* tp_iternext */
-	array_methods,				/* tp_methods */
-	0,					/* tp_members */
-	array_getsets,				/* tp_getset */
-	0,					/* tp_base */
-	0,					/* tp_dict */
-	0,					/* tp_descr_get */
-	0,					/* tp_descr_set */
-	0,					/* tp_dictoffset */
-	0,					/* tp_init */
-	PyType_GenericAlloc,			/* tp_alloc */
-	array_new,				/* tp_new */
-	PyObject_Del,				/* tp_free */
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "array.array",
+    sizeof(arrayobject),
+    0,
+    (destructor)array_dealloc,                  /* tp_dealloc */
+    0,                                          /* tp_print */
+    0,                                          /* tp_getattr */
+    0,                                          /* tp_setattr */
+    0,                                          /* tp_reserved */
+    (reprfunc)array_repr,                       /* tp_repr */
+    0,                                          /* tp_as_number*/
+    &array_as_sequence,                         /* tp_as_sequence*/
+    &array_as_mapping,                          /* tp_as_mapping*/
+    0,                                          /* tp_hash */
+    0,                                          /* tp_call */
+    0,                                          /* tp_str */
+    PyObject_GenericGetAttr,                    /* tp_getattro */
+    0,                                          /* tp_setattro */
+    &array_as_buffer,                           /* tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+    arraytype_doc,                              /* tp_doc */
+    0,                                          /* tp_traverse */
+    0,                                          /* tp_clear */
+    array_richcompare,                          /* tp_richcompare */
+    offsetof(arrayobject, weakreflist),         /* tp_weaklistoffset */
+    (getiterfunc)array_iter,                    /* tp_iter */
+    0,                                          /* tp_iternext */
+    array_methods,                              /* tp_methods */
+    0,                                          /* tp_members */
+    array_getsets,                              /* tp_getset */
+    0,                                          /* tp_base */
+    0,                                          /* tp_dict */
+    0,                                          /* tp_descr_get */
+    0,                                          /* tp_descr_set */
+    0,                                          /* tp_dictoffset */
+    0,                                          /* tp_init */
+    PyType_GenericAlloc,                        /* tp_alloc */
+    array_new,                                  /* tp_new */
+    PyObject_Del,                               /* tp_free */
 };
 
 
 /*********************** Array Iterator **************************/
 
 typedef struct {
-	PyObject_HEAD
-	Py_ssize_t			index;
-	arrayobject		*ao;
-	PyObject		* (*getitem)(struct arrayobject *, Py_ssize_t);
+    PyObject_HEAD
+    Py_ssize_t                          index;
+    arrayobject                 *ao;
+    PyObject                    * (*getitem)(struct arrayobject *, Py_ssize_t);
 } arrayiterobject;
 
 static PyTypeObject PyArrayIter_Type;
@@ -2554,79 +2554,79 @@
 static PyObject *
 array_iter(arrayobject *ao)
 {
-	arrayiterobject *it;
+    arrayiterobject *it;
 
-	if (!array_Check(ao)) {
-		PyErr_BadInternalCall();
-		return NULL;
-	}
+    if (!array_Check(ao)) {
+        PyErr_BadInternalCall();
+        return NULL;
+    }
 
-	it = PyObject_GC_New(arrayiterobject, &PyArrayIter_Type);
-	if (it == NULL)
-		return NULL;
+    it = PyObject_GC_New(arrayiterobject, &PyArrayIter_Type);
+    if (it == NULL)
+        return NULL;
 
-	Py_INCREF(ao);
-	it->ao = ao;
-	it->index = 0;
-	it->getitem = ao->ob_descr->getitem;
-	PyObject_GC_Track(it);
-	return (PyObject *)it;
+    Py_INCREF(ao);
+    it->ao = ao;
+    it->index = 0;
+    it->getitem = ao->ob_descr->getitem;
+    PyObject_GC_Track(it);
+    return (PyObject *)it;
 }
 
 static PyObject *
 arrayiter_next(arrayiterobject *it)
 {
-	assert(PyArrayIter_Check(it));
-	if (it->index < Py_SIZE(it->ao))
-		return (*it->getitem)(it->ao, it->index++);
-	return NULL;
+    assert(PyArrayIter_Check(it));
+    if (it->index < Py_SIZE(it->ao))
+        return (*it->getitem)(it->ao, it->index++);
+    return NULL;
 }
 
 static void
 arrayiter_dealloc(arrayiterobject *it)
 {
-	PyObject_GC_UnTrack(it);
-	Py_XDECREF(it->ao);
-	PyObject_GC_Del(it);
+    PyObject_GC_UnTrack(it);
+    Py_XDECREF(it->ao);
+    PyObject_GC_Del(it);
 }
 
 static int
 arrayiter_traverse(arrayiterobject *it, visitproc visit, void *arg)
 {
-	Py_VISIT(it->ao);
-	return 0;
+    Py_VISIT(it->ao);
+    return 0;
 }
 
 static PyTypeObject PyArrayIter_Type = {
-	PyVarObject_HEAD_INIT(NULL, 0)
-	"arrayiterator",                        /* tp_name */
-	sizeof(arrayiterobject),                /* tp_basicsize */
-	0,                                      /* tp_itemsize */
-	/* methods */
-	(destructor)arrayiter_dealloc,		/* tp_dealloc */
-	0,                                      /* tp_print */
-	0,                                      /* tp_getattr */
-	0,                                      /* tp_setattr */
-	0,                                      /* tp_reserved */
-	0,                                      /* tp_repr */
-	0,                                      /* tp_as_number */
-	0,                                      /* tp_as_sequence */
-	0,                                      /* tp_as_mapping */
-	0,                                      /* tp_hash */
-	0,                                      /* tp_call */
-	0,                                      /* tp_str */
-	PyObject_GenericGetAttr,                /* tp_getattro */
-	0,                                      /* tp_setattro */
-	0,                                      /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-	0,                                      /* tp_doc */
-	(traverseproc)arrayiter_traverse,	/* tp_traverse */
-	0,					/* tp_clear */
-	0,                                      /* tp_richcompare */
-	0,                                      /* tp_weaklistoffset */
-	PyObject_SelfIter,			/* tp_iter */
-	(iternextfunc)arrayiter_next,		/* tp_iternext */
-	0,					/* tp_methods */
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "arrayiterator",                        /* tp_name */
+    sizeof(arrayiterobject),                /* tp_basicsize */
+    0,                                      /* tp_itemsize */
+    /* methods */
+    (destructor)arrayiter_dealloc,              /* tp_dealloc */
+    0,                                      /* tp_print */
+    0,                                      /* tp_getattr */
+    0,                                      /* tp_setattr */
+    0,                                      /* tp_reserved */
+    0,                                      /* tp_repr */
+    0,                                      /* tp_as_number */
+    0,                                      /* tp_as_sequence */
+    0,                                      /* tp_as_mapping */
+    0,                                      /* tp_hash */
+    0,                                      /* tp_call */
+    0,                                      /* tp_str */
+    PyObject_GenericGetAttr,                /* tp_getattro */
+    0,                                      /* tp_setattro */
+    0,                                      /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
+    0,                                      /* tp_doc */
+    (traverseproc)arrayiter_traverse,           /* tp_traverse */
+    0,                                          /* tp_clear */
+    0,                                      /* tp_richcompare */
+    0,                                      /* tp_weaklistoffset */
+    PyObject_SelfIter,                          /* tp_iter */
+    (iternextfunc)arrayiter_next,               /* tp_iternext */
+    0,                                          /* tp_methods */
 };
 
 
@@ -2640,54 +2640,54 @@
 };
 
 static struct PyModuleDef arraymodule = {
-	PyModuleDef_HEAD_INIT,
-	"array",
-	module_doc,
-	-1,
-	a_methods,
-	NULL,
-	NULL,
-	NULL,
-	NULL
+    PyModuleDef_HEAD_INIT,
+    "array",
+    module_doc,
+    -1,
+    a_methods,
+    NULL,
+    NULL,
+    NULL,
+    NULL
 };
 
 
 PyMODINIT_FUNC
 PyInit_array(void)
 {
-	PyObject *m;
-	PyObject *typecodes;
-	Py_ssize_t size = 0;
-	register Py_UNICODE *p;
-	struct arraydescr *descr;
+    PyObject *m;
+    PyObject *typecodes;
+    Py_ssize_t size = 0;
+    register Py_UNICODE *p;
+    struct arraydescr *descr;
 
-	if (PyType_Ready(&Arraytype) < 0)
-            return NULL;
-	Py_TYPE(&PyArrayIter_Type) = &PyType_Type;
-	m = PyModule_Create(&arraymodule);
-	if (m == NULL)
-		return NULL;
+    if (PyType_Ready(&Arraytype) < 0)
+        return NULL;
+    Py_TYPE(&PyArrayIter_Type) = &PyType_Type;
+    m = PyModule_Create(&arraymodule);
+    if (m == NULL)
+        return NULL;
 
-        Py_INCREF((PyObject *)&Arraytype);
-	PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype);
-        Py_INCREF((PyObject *)&Arraytype);
-	PyModule_AddObject(m, "array", (PyObject *)&Arraytype);
+    Py_INCREF((PyObject *)&Arraytype);
+    PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype);
+    Py_INCREF((PyObject *)&Arraytype);
+    PyModule_AddObject(m, "array", (PyObject *)&Arraytype);
 
-	for (descr=descriptors; descr->typecode != '\0'; descr++) {
-		size++;
-	}
-	
-	typecodes = PyUnicode_FromStringAndSize(NULL, size);
-	p = PyUnicode_AS_UNICODE(typecodes);
-	for (descr = descriptors; descr->typecode != '\0'; descr++) {
-		*p++ = (char)descr->typecode;
-	}
+    for (descr=descriptors; descr->typecode != '\0'; descr++) {
+        size++;
+    }
 
-	PyModule_AddObject(m, "typecodes", (PyObject *)typecodes);
-	
-	if (PyErr_Occurred()) {
-		Py_DECREF(m);
-		m = NULL;
-	}
-	return m;
+    typecodes = PyUnicode_FromStringAndSize(NULL, size);
+    p = PyUnicode_AS_UNICODE(typecodes);
+    for (descr = descriptors; descr->typecode != '\0'; descr++) {
+        *p++ = (char)descr->typecode;
+    }
+
+    PyModule_AddObject(m, "typecodes", (PyObject *)typecodes);
+
+    if (PyErr_Occurred()) {
+        Py_DECREF(m);
+        m = NULL;
+    }
+    return m;
 }