From 7b3e4ca843fc32922919055fbae2182091725078 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Fri, 31 May 2019 12:09:48 +0100
Subject: [PATCH] BF: makeWriteable will make a copy of an array if its base is
 a bytes object. Works around older numpy versions

---
 fsl/data/utils.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/fsl/data/utils.py b/fsl/data/utils.py
index d902dc18a..13aae313b 100644
--- a/fsl/data/utils.py
+++ b/fsl/data/utils.py
@@ -84,7 +84,19 @@ def makeWriteable(array):
     is not possible, a copy is created and returned.
     """
     try:
+        # Versions of numpy prior to 1.16 will
+        # happily mutate a bytes array, whcih
+        # is supposed to be immutable. So if
+        # is the case, let's force a copy.
+        if isinstance(array.base, bytes):
+            raise ValueError()
+
+        # In versions of numpy 1.16 and newer,
+        # setting the WRITEABLE flag on an
+        # immutable array will cause a
+        # ValueError to be raised
         array.flags['WRITEABLE'] = True
+
     except ValueError:
         array = np.array(array)
     return array
-- 
GitLab