diff --git a/src/realm/group.cpp b/src/realm/group.cpp index 960e07d3d6..7064b511d2 100644 --- a/src/realm/group.cpp +++ b/src/realm/group.cpp @@ -943,19 +943,17 @@ ref_type Group::typed_write_tables(_impl::ArrayWriterBase& out) const ref_type ref = m_top.get_as_ref(1); if (out.only_modified && m_alloc.is_read_only(ref)) return ref; - Array a(m_alloc); - a.init_from_ref(ref); - REALM_ASSERT_DEBUG(a.has_refs()); - TempArray dest(a.size()); - for (unsigned j = 0; j < a.size(); ++j) { - RefOrTagged rot = a.get_as_ref_or_tagged(j); + auto num_tables = m_tables.size(); + TempArray dest(num_tables); + for (unsigned j = 0; j < num_tables; ++j) { + RefOrTagged rot = m_tables.get_as_ref_or_tagged(j); if (rot.is_tagged()) { dest.set(j, rot); } else { auto table = do_get_table(j); REALM_ASSERT_DEBUG(table); - dest.set_as_ref(j, table->typed_write(rot.get_as_ref(), out)); + dest.set_as_ref(j, table->typed_write(out)); } } return dest.write(out); diff --git a/src/realm/table.cpp b/src/realm/table.cpp index acbb234fb0..6c66c4feda 100644 --- a/src/realm/table.cpp +++ b/src/realm/table.cpp @@ -3456,9 +3456,9 @@ ColKey Table::find_opposite_column(ColKey col_key) const return ColKey(); } -ref_type Table::typed_write(ref_type ref, _impl::ArrayWriterBase& out) const +ref_type Table::typed_write(_impl::ArrayWriterBase& out) const { - REALM_ASSERT(ref == m_top.get_mem().get_ref()); + auto ref = m_top.get_ref(); if (out.only_modified && m_alloc.is_read_only(ref)) return ref; out.table = this; diff --git a/src/realm/table.hpp b/src/realm/table.hpp index d2aaea6038..86a78901cd 100644 --- a/src/realm/table.hpp +++ b/src/realm/table.hpp @@ -687,7 +687,7 @@ class Table { Replication* const* m_repl; }; - ref_type typed_write(ref_type ref, _impl::ArrayWriterBase& out) const; + ref_type typed_write(_impl::ArrayWriterBase& out) const; private: enum LifeCycleCookie {