[controls/PageRouter]: Fix bug with extended properties when replacing a route with navigateToRoute
if (current->name != incoming->name || current->data != incoming->data) { resolvedRoutes.replace(i, incoming); }
This codepath replaces resolvedRoutes[i] with incoming.
Shortly after, we do this:
resolvedRoutes[i]->properties.clear(); for (auto it = incoming->properties.constBegin(); it != incoming->properties.constEnd(); it++) { resolvedRoutes[i]->properties.insert(it.key(), it.value()); }
If the above conditional was evaluated and resolvedRoutes[i] was replaced with incoming, we would be clearing its properties map and then iterate through it, copying from incoming to resolvedRoutes[i] (alias of incoming). For obvious reasons, this fails, resulting in a blank map. Extracting out the properties map by value instead of by reference before this code and using the copy allows us to have the intended semantics.