diff --git a/include/flatbuffers/flatbuffer_builder.h b/include/flatbuffers/flatbuffer_builder.h index 8be4efbe9..5837cc6f7 100644 --- a/include/flatbuffers/flatbuffer_builder.h +++ b/include/flatbuffers/flatbuffer_builder.h @@ -922,7 +922,7 @@ class FlatBufferBuilder { /// where the vector is stored. template Offset> CreateVectorOfSortedStructs(T *v, size_t len) { - std::sort(v, v + len, StructKeyComparator()); + std::stable_sort(v, v + len, StructKeyComparator()); return CreateVectorOfStructs(v, len); } @@ -941,7 +941,7 @@ class FlatBufferBuilder { extern T Pack(const S &); auto structs = StartVectorOfStructs(len); for (size_t i = 0; i < len; i++) { structs[i] = Pack(v[i]); } - std::sort(structs, structs + len, StructKeyComparator()); + std::stable_sort(structs, structs + len, StructKeyComparator()); return EndVectorOfStructs(len); } @@ -973,7 +973,7 @@ class FlatBufferBuilder { template Offset>> CreateVectorOfSortedTables(Offset *v, size_t len) { - std::sort(v, v + len, TableKeyComparator(buf_)); + std::stable_sort(v, v + len, TableKeyComparator(buf_)); return CreateVector(v, len); }