From 6ffb8616e3a62cbc1d120e69cf581e4557a38484 Mon Sep 17 00:00:00 2001 From: teidesu Date: Mon, 31 May 2021 22:56:58 +0300 Subject: [PATCH] fix(sqlite): handle stored objects from older incompatible tl layers --- packages/sqlite/index.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/sqlite/index.ts b/packages/sqlite/index.ts index e613aac1..9237067b 100644 --- a/packages/sqlite/index.ts +++ b/packages/sqlite/index.ts @@ -116,7 +116,7 @@ interface SqliteEntity { interface CacheItem { peer: tl.TypeInputPeer - full: tl.TypeUser | tl.TypeChat + full: tl.TypeUser | tl.TypeChat | null } interface FsmItem { @@ -267,11 +267,18 @@ export class SqliteStorage implements ITelegramStorage /*, IStateStorage */ { // todo: add support for workers (idk if really needed, but still) } - private _readFullPeer(data: Buffer): tl.TypeUser | tl.TypeChat { + private _readFullPeer(data: Buffer): tl.TypeUser | tl.TypeChat | null { // reuse reader because why not this._reader.pos = 0 this._reader.data = data - const obj = this._reader.object() + let obj + try { + obj = this._reader.object() + } catch (e) { + // object might be from an older tl layer, in which case + // it should be ignored (i guess?????) + obj = null + } // remove reference to allow GC-ing this._reader.data = EMPTY_BUFFER return obj