Hi, thanks for the report.
Mike Zaletel, 25.07.2012 00:40: > The exact behavior of array assignment was never entirely clear to me Yes, it's not entirely obvious. > but I am certain the following behavior did not occur in 0.16: > > --------bug.pyx---------- > > def foo(): > cdef int i > cdef int* p1 = [4, 4] > cdef int* p2 = [5, 5] > > print "p1:", > for i in range(2): > print p1[i], > print "\np2:", > for i in range(2): > print p2[i], > > ----------------------------- > > which in Cython 0.17beta1 gives me > > >>> import bug > >>> bug.foo() > p1: 5 5 > p2: 5 5 > > > while in Cython 0.16 I get > > >>> import bug > >>> bug.foo() > p1: 4 4 > p2: 5 5 The problem is that the same (temporary) local array variable is used in both cases to build the array, and then only a pointer is assigned, i.e. p1 and p2 then point to the same array, which gets overwritten with the new values in the second assignment. Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel