also, this fixes some potential memory leaks if vectors of different sizes are assigned and it fixes the assignment-to-self (`x = x`) case.
also, this fixes some potential memory leaks if vectors of different sizes are assigned and it fixes the assignment-to-self (`x = x`) case.