diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
index d92205b..4d56f54 100755
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -239,11 +239,6 @@
         if a.itemsize>1:
             self.assertRaises(ValueError, b.fromstring, "x")
 
-    def test_fromarray(self):
-        a = array.array(self.typecode, self.example)
-        b = array.array(self.typecode, a)
-        self.assertEqual(a, b)
-
     def test_repr(self):
         a = array.array(self.typecode, 2*self.example)
         self.assertEqual(a, eval(repr(a), {"array": array.array}))
@@ -963,11 +958,6 @@
 
         self.assertRaises(AttributeError, setattr, a, "color", "blue")
 
-    def test_frombytearray(self):
-        a = array.array('b', range(10))
-        b = array.array(self.typecode, a)
-        self.assertEqual(a, b)
-
 class SignedNumberTest(NumberTest):
     example = [-1, 0, 1, 42, 0x7f]
     smallerexample = [-1, 0, 1, 42, 0x7e]
diff --git a/Misc/NEWS b/Misc/NEWS
index f3e3c1f..ab47022 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -973,9 +973,6 @@
 Extension Modules
 -----------------
 
-- Issue #5109: array.array constructor will now use fast code when
-  initial data is provided in an array object with correct type.
-
 - Issue #7384: If the system readline library is linked against ncurses,
   the curses module must be linked against ncurses as well. Otherwise it
   is not safe to load both the readline and curses modules in an application.
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index ba07e02..1602e48 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1925,10 +1925,7 @@
 
     if (!(initial == NULL || PyList_Check(initial)
           || PyString_Check(initial) || PyTuple_Check(initial)
-          || PyTuple_Check(initial)
-          || ((c=='u') && PyUnicode_Check(initial))
-          || (array_Check(initial)
-              && c == ((arrayobject*)initial)->ob_descr->typecode))) {
+          || (c == 'u' && PyUnicode_Check(initial)))) {
         it = PyObject_GetIter(initial);
         if (it == NULL)
             return NULL;
@@ -1944,20 +1941,17 @@
             PyObject *a;
             Py_ssize_t len;
 
-            if (initial == NULL)
+            if (initial == NULL || !(PyList_Check(initial)
+                || PyTuple_Check(initial)))
                 len = 0;
-            else if (PyList_Check(initial))
-                len = PyList_GET_SIZE(initial);
-            else if (PyTuple_Check(initial) || array_Check(initial))
-                len = Py_SIZE(initial);
             else
-                len = 0;
+                len = PySequence_Size(initial);
 
             a = newarrayobject(type, len, descr);
             if (a == NULL)
                 return NULL;
 
-            if (len > 0 && !array_Check(initial)) {
+            if (len > 0) {
                 Py_ssize_t i;
                 for (i = 0; i < len; i++) {
                     PyObject *v =
@@ -2007,11 +2001,6 @@
                 }
 #endif
             }
-            else if (initial != NULL && array_Check(initial)) {
-                arrayobject *self = (arrayobject *)a;
-                arrayobject *other = (arrayobject *)initial;
-                memcpy(self->ob_item, other->ob_item, len * other->ob_descr->itemsize);
-            }
             if (it != NULL) {
                 if (array_iter_extend((arrayobject *)a, it) == -1) {
                     Py_DECREF(it);
