Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Magidovich <mgsergio@mapswithme.com>2016-07-19 12:36:20 +0300
committerSergey Magidovich <mgsergio@mapswithme.com>2016-07-19 13:36:43 +0300
commitdac65e509fabfe29d6d51ac25b61b017bf077a46 (patch)
tree0a95db802fc63467c68804343b7237c4875e4e56 /indexer/osm_editor.cpp
parente943947615f95bd9da5788ca87dec29a78101359 (diff)
Fix crash in created feature editing.
Diffstat (limited to 'indexer/osm_editor.cpp')
-rw-r--r--indexer/osm_editor.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/indexer/osm_editor.cpp b/indexer/osm_editor.cpp
index b98f934c7c..76e55a5197 100644
--- a/indexer/osm_editor.cpp
+++ b/indexer/osm_editor.cpp
@@ -448,10 +448,20 @@ Editor::SaveResult Editor::SaveEditedFeature(EditableMapObject const & emo)
ASSERT_NOT_EQUAL(featureStatus, FeatureStatus::Obsolete, ("Obsolete feature cannot be modified."));
bool const wasCreatedByUser = IsCreatedFeature(fid);
- if (wasCreatedByUser && featureStatus == FeatureStatus::Untouched)
+ if (wasCreatedByUser)
{
fti.m_status = FeatureStatus::Created;
fti.m_feature.ReplaceBy(emo);
+
+ if (featureStatus == FeatureStatus::Created)
+ {
+ auto const & editedFeatureInfo = m_features[fid.m_mwmId][fid.m_index];
+ if (AreFeaturesEqualButStreet(fti.m_feature, editedFeatureInfo.m_feature) &&
+ emo.GetStreet().m_defaultName == editedFeatureInfo.m_street)
+ {
+ return NothingWasChanged;
+ }
+ }
}
else
{
@@ -469,7 +479,7 @@ Editor::SaveResult Editor::SaveEditedFeature(EditableMapObject const & emo)
? *originalFeaturePtr
: m_features[fid.m_mwmId][fid.m_index].m_feature;
fti.m_feature.ReplaceBy(emo);
- bool const sameAsInMWM = featureStatus != FeatureStatus::Created &&
+ bool const sameAsInMWM =
AreFeaturesEqualButStreet(fti.m_feature, *originalFeaturePtr) &&
emo.GetStreet().m_defaultName == m_getOriginalFeatureStreetFn(fti.m_feature);
@@ -506,9 +516,7 @@ Editor::SaveResult Editor::SaveEditedFeature(EditableMapObject const & emo)
return NothingWasChanged;
}
- fti.m_status = featureStatus == FeatureStatus::Created
- ? FeatureStatus::Created
- : FeatureStatus::Modified;
+ fti.m_status = FeatureStatus::Modified;
}
// TODO: What if local client time is absolutely wrong?