Fix zero-size object copy failure

Found via work on #880 . Tests will follow.
Start and end of Range are both index, so `Start =:= End` means 1 byte range.