b) Work around it.
This is what I was trying to do via pthread_cancel + sf_open_fd. It
seems to work with FLAC.
However, there could be memory leaks if any decoder / encoder function
(in sndfile or one of the external libs) allocates temporary memory
that it expects to free before returning. Do you know if this might be
the case (e.g. for the native formats, libFLAC, libvorbis)?
I may need to fall back on the vio stuff. How does a sf_vio_read or
sf_vio_write signal I/O errors? How does a vio_read signal EOF? The
API docs don't seem to say anything.
-- Dan