--- numpy/core/src/multiarraymodule.c.orig	2007-08-02 20:29:51.000000000 -0300
+++ numpy/core/src/multiarraymodule.c	2007-08-02 20:36:40.000000000 -0300
@@ -5606,15 +5606,18 @@
 			if (!copy && STRIDING_OK(op, order)) {
 				Py_INCREF(op);
 				ret = op;
+				Py_DECREF(type);
 				goto finish;
 			}
 			else {
 				ret = PyArray_NewCopy((PyArrayObject*)op,
 						      order);
-				if (oldtype == type) goto finish;
-				Py_INCREF(oldtype);
-				Py_DECREF(PyArray_DESCR(ret));
-				PyArray_DESCR(ret) = oldtype;
+				if (oldtype != type) {
+					Py_INCREF(oldtype);
+					Py_DECREF(PyArray_DESCR(ret));
+					PyArray_DESCR(ret) = oldtype;
+				}
+				Py_DECREF(type);
 				goto finish;
 			}
 		}
