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