Use ssize_t instead of unsigned-long to prevent issue on C compilers where sizeof(unsigned-long) != sizeof(void*)