diff --git a/tool/net/demo/sql-backup.lua b/tool/net/demo/sql-backup.lua index e8dea9f54..77d6b93b9 100644 --- a/tool/net/demo/sql-backup.lua +++ b/tool/net/demo/sql-backup.lua @@ -7,7 +7,12 @@ backup = sqlite3.open_memory() buffer = LoadAsset("backup.sqlite3") backup:deserialize(buffer) +-- insert more values +for i = 1, 250 do + backup:exec("INSERT INTO test (content) VALUES ('Hello more')") +end + -- See .init.lua for CREATE TABLE setup. for row in backup:nrows("SELECT * FROM test") do Write(row.id.." "..row.content.."
") -end \ No newline at end of file +end diff --git a/tool/net/lsqlite3.c b/tool/net/lsqlite3.c index ff7485c6b..d03092136 100644 --- a/tool/net/lsqlite3.c +++ b/tool/net/lsqlite3.c @@ -1812,8 +1812,9 @@ static int db_deserialize(lua_State *L) { if (buffer == NULL || size == 0) /* ignore empty database content */ return 0; - sqlite3_deserialize(db->db, "main", buffer, size, size, 0); - free(buffer); + const char *sqlbuf = memcpy(sqlite3_malloc(size), buffer, size); + sqlite3_deserialize(db->db, "main", sqlbuf, size, size, + SQLITE_DESERIALIZE_FREEONCLOSE + SQLITE_DESERIALIZE_RESIZEABLE); return 0; }