From: Dag Sverre Seljebotn Date: Fri, 25 Jul 2008 13:48:30 +0000 (+0200) Subject: Added test case and fixed bug with unsigned indexing X-Git-Tag: 0.9.8.1~49^2~72 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=f8e18013f7432896cdfd550b4966fcfe5f79d26c;p=cython.git Added test case and fixed bug with unsigned indexing --- diff --git a/Cython/Compiler/Buffer.py b/Cython/Compiler/Buffer.py index 9f318a68..a4f10682 100644 --- a/Cython/Compiler/Buffer.py +++ b/Cython/Compiler/Buffer.py @@ -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.put("} else ") else: - if idx > 0: code.put("} else ") + if idx > 0: code.put("else ") if boundscheck: # check bounds in positive direction code.putln("if (%s) %s = %d;" % ( diff --git a/tests/run/bufaccess.pyx b/tests/run/bufaccess.pyx index a0bff648..33db4f09 100644 --- a/tests/run/bufaccess.pyx +++ b/tests/run/bufaccess.pyx @@ -91,7 +91,15 @@ Out-of-bounds errors: ... 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 """ @@ -154,7 +162,13 @@ def printbuf_int_2d(o, shape): def get_int_2d(object[int, 2] buf, int i, int 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 object format cdef char* buffer