1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:28:12 +00:00

LibSQL: Fix BTree corruption in TreeNode::split

After splitting a node, the new node was written to the same pointer as
the current node - probably a copy / paste error. This new code requires
a `.pointer() -> u32` to exist on the object to be serialized,
preventing this issue from happening again.

Fixes #15844.
This commit is contained in:
Jelle Raaijmakers 2022-11-26 01:17:43 +01:00 committed by Andreas Kling
parent e5e00a682b
commit 70a7bca920
7 changed files with 35 additions and 16 deletions

View file

@ -223,7 +223,7 @@ ErrorOr<void> Database::update(Row& tuple)
VERIFY(m_table_cache.get(tuple.table()->key().hash()).has_value());
// TODO Check constraints
m_serializer.reset();
m_serializer.serialize_and_write<Tuple>(tuple, tuple.pointer());
m_serializer.serialize_and_write<Tuple>(tuple);
// TODO update indexes defined on table.
return {};