Commit f8e18013 authored by Dag Sverre Seljebotn's avatar Dag Sverre Seljebotn

Added test case and fixed bug with unsigned indexing

parent 0a86ec8f
...@@ -128,7 +128,7 @@ def put_access(entry, index_types, index_cnames, tmp_cname, pos, code): ...@@ -128,7 +128,7 @@ def put_access(entry, index_types, index_cnames, tmp_cname, pos, code):
code.unlikely("%s < 0" % cname), tmp_cname, idx)) code.unlikely("%s < 0" % cname), tmp_cname, idx))
code.put("} else ") code.put("} else ")
else: else:
if idx > 0: code.put("} else ") if idx > 0: code.put("else ")
if boundscheck: if boundscheck:
# check bounds in positive direction # check bounds in positive direction
code.putln("if (%s) %s = %d;" % ( code.putln("if (%s) %s = %d;" % (
......
...@@ -91,7 +91,15 @@ Out-of-bounds errors: ...@@ -91,7 +91,15 @@ Out-of-bounds errors:
... ...
IndexError: Out of bounds on buffer access (axis 1) IndexError: Out of bounds on buffer access (axis 1)
Unsigned indexing:
>>> get_int_2d_uintindex(C, 0, 0)
acquired C
released C
0
>>> get_int_2d_uintindex(C, 1, 2)
acquired C
released C
5
""" """
...@@ -155,6 +163,12 @@ def printbuf_int_2d(o, shape): ...@@ -155,6 +163,12 @@ def printbuf_int_2d(o, shape):
def get_int_2d(object[int, 2] buf, int i, int j): def get_int_2d(object[int, 2] buf, int i, int j):
return buf[i, j] return buf[i, j]
def get_int_2d_uintindex(object[int, 2] buf, unsigned int i, unsigned int j):
# This is most interesting with regards to the C code
# generated.
return buf[i, j]
cdef class MockBuffer: cdef class MockBuffer:
cdef object format cdef object format
cdef char* buffer cdef char* buffer
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment