being a nonstandard function, this isn't strictly necessary, but it's inexpensive and avoids unpleasant surprises. eventually I would like all functions in libc to be safe against cancellation, either ignoring it or acting on it cleanly.
not only is this semantically more correct; it also reduces code size slightly by eliminating the need for the compiler to assume the possibility of aliasing.
-1, not 0, indicates failure