
<   for (i = 3; i < size / 2; i *= 2)
<       memcpy (r + i, r, i);
---
>   for (i = 3; i < size / 2 && i <= size - i; i *= 2)
>       memcpy (r + i, r, i);
