This calls the copy constructor for Polygon, but I don't see where you define the copy constructor for Polygon. If you don't define a copy constructor, the compiler will generate one for you, which will just do a shallow copy of your m_pt array instead of a deep copy.
Again, just a guess. But try looking in that direction.