fix abuses of ptrdiff_t