7 Aug 2012 11:53
[Cython] automatically raise MemoryError on exceptional C return values
Hi,
given how ubiquitous manual memory management is in C, I think it would be
nice to let Cython generate the exception raising also for C, not only for
C++. The difference is this:
cdef extern from "...":
char* make_new_buffer() except NULL as MemoryError
int append_to_buffer(char* buffer, char* value) \
except -1 as MemoryError
c_buffer = make_new_buffer() # raises MemoryError on NULL
append_to_buffer(c_buffer, "testdata") # raises MemoryError on -1
append_to_buffer(c_buffer, "moredata") # raises MemoryError on -1
versus this:
cdef extern from "...":
char* make_new_buffer()
int append_to_buffer(char* buffer, char* value)
c_buffer = make_new_buffer()
if c_buffer is NULL:
raise MemoryError()
if append_to_buffer(c_buffer, "testdata") == -1:
raise MemoryError()
if append_to_buffer(c_buffer, "moredata") == -1:
raise MemoryError()
I don't think it's necessary to support this for anything but MemoryError,
(Continue reading)
RSS Feed