merge: handle case where there's still space in the destination heap