diff --git a/src/user/user_mesh.cc b/src/user/user_mesh.cc index 5debc32a..29b01be3 100644 --- a/src/user/user_mesh.cc +++ b/src/user/user_mesh.cc @@ -318,7 +318,7 @@ void mjCMesh::Compile(int vfs_provider) { // check for inconsistent face orientations if (!useredge.empty()) { - std::sort(useredge.begin(), useredge.end()); + std::stable_sort(useredge.begin(), useredge.end()); auto iterator = std::adjacent_find(useredge.begin(), useredge.end()); if (iterator != useredge.end()) { invalidorientation.first = iterator->first+1; diff --git a/src/user/user_model.cc b/src/user/user_model.cc index 3f670a85..2e4c3bb1 100644 --- a/src/user/user_model.cc +++ b/src/user/user_model.cc @@ -2619,8 +2619,8 @@ void mjCModel::TryCompile(mjModel*& m, mjData*& d, int vfs_provider) { } // sort pair, exclude in increasing signature order; reassign ids - sort(pairs.begin(), pairs.end(), comparePair); - sort(excludes.begin(), excludes.end(), compareBodyPair); + std::stable_sort(pairs.begin(), pairs.end(), comparePair); + std::stable_sort(excludes.begin(), excludes.end(), compareBodyPair); reassignid(pairs); reassignid(excludes);