John Ehresman, 27.05.2011 21:55:
ord() applied to a Py_UNICODE typed variable seems to yield a 1 character
unicode string rather than an integer. The following doctest fails when
added to unicodefunction.pyx:

def Py_UNICODE_ord(unicode s):
    """
     >>> Py_UNICODE_ord(u' ')
    32
    """
    cdef Py_UNICODE u
    u = s[0]
    return ord(u)

ord() is actually unpacked in this case (see Optimise.py), but the result type is incorrect. It's Py_UNICODE (which coerces back to a unicode string), whereas it should be int (thus coercing to a Python integer object).

I pushed a fix, and also the obvious optimisation for calling ord() on single character string literals.

Thanks for the report.

Stefan
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to