From f8e18013f7432896cdfd550b4966fcfe5f79d26c Mon Sep 17 00:00:00 2001 From: Dag Sverre Seljebotn Date: Fri, 25 Jul 2008 15:48:30 +0200 Subject: [PATCH] Added test case and fixed bug with unsigned indexing --- Cython/Compiler/Buffer.py | 2 +- tests/run/bufaccess.pyx | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) 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 -- 2.26.2