memcpy -> memmove, canon paths may overlap