1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 13:17:44 +00:00

LibSQL+SQLServer: Do not re-open databases

Both `Database` and `Heap` were allowed to be opened twice. Prevent
this, and change SQLServer to only open databases that are not already
opened.

This fixes a Ladybird crash where opening the application twice would
erroneously duplicate free heap block indices.
This commit is contained in:
Jelle Raaijmakers 2023-06-13 21:52:58 +02:00 committed by Tim Flynn
parent c05e08decb
commit 70ca295404
3 changed files with 8 additions and 4 deletions

View file

@ -23,6 +23,7 @@ Database::Database(DeprecatedString name)
ResultOr<void> Database::open()
{
VERIFY(!m_open);
TRY(m_heap->open());
m_schemas = BTree::construct(m_serializer, SchemaDef::index_def()->to_tuple_descriptor(), m_heap->schemas_root());

View file

@ -29,6 +29,8 @@ Heap::~Heap()
ErrorOr<void> Heap::open()
{
VERIFY(!m_file);
size_t file_size = 0;
struct stat stat_buffer;
if (stat(name().characters(), &stat_buffer) != 0) {