[pypy-commit] pypy default: test, fix for overrun end of storage when offset, i non-zero
mattip
noreply at buildbot.pypy.org
Sat Oct 3 23:25:58 CEST 2015
Author: mattip <matti.picus at gmail.com>
Branch:
Changeset: r79957:a3564b6798cb
Date: 2015-10-04 00:25 +0300
http://bitbucket.org/pypy/pypy/changeset/a3564b6798cb/
Log: test, fix for overrun end of storage when offset, i non-zero
diff --git a/pypy/module/micronumpy/test/test_ndarray.py b/pypy/module/micronumpy/test/test_ndarray.py
--- a/pypy/module/micronumpy/test/test_ndarray.py
+++ b/pypy/module/micronumpy/test/test_ndarray.py
@@ -2475,6 +2475,18 @@
a.fill(12)
assert (a == u'1').all()
+ def test_unicode_record_array(self) :
+ from numpy import dtype, array
+ t = dtype([('a', 'S3'), ('b', 'U2')])
+ x = array([('a', u'b')], dtype=t)
+ assert str(x) == "[('a', u'b')]"
+
+ t = dtype([('a', 'U3'), ('b', 'S2')])
+ x = array([(u'a', 'b')], dtype=t)
+ x['a'] = u'1'
+ assert str(x) == "[(u'1', 'b')]"
+
+
def test_boolean_indexing(self):
import numpy as np
a = np.zeros((1, 3))
diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -2231,9 +2231,9 @@
index = i + offset + 4*k
data = rffi.cast(Int32.T, ord(box._value[k]))
raw_storage_setitem_unaligned(storage, index, data)
- for k in range(size, width // 4):
- index = i + offset + 4*k
- data = rffi.cast(Int32.T, 0)
+ # zero out the remaining memory
+ for index in range(size * 4 + i + offset, width):
+ data = rffi.cast(Int8.T, 0)
raw_storage_setitem_unaligned(storage, index, data)
def read(self, arr, i, offset, dtype):
More information about the pypy-commit
mailing list