The compiler was super-optimizing there, and my initial untangling
was incorrect. Restoring it with nasty goto's and will fix it later
once we have enough test cases.
I assume that the purpose of realloc() here is to increase the
_points memory area, but it's not guaranteed that the new block
will start at the same address as the old one.