From c7eea620a302e1604133a5f1a58da78ea936f739 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Mon, 5 Feb 2024 00:19:26 +0000 Subject: [PATCH] Tweaks. --- ext/blobio/blob.go | 4 ++-- go.work.sum | 1 + sqlite3/vtab.c | 1 + vtab.go | 5 +++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ext/blobio/blob.go b/ext/blobio/blob.go index bf528ec..e5e1512 100644 --- a/ext/blobio/blob.go +++ b/ext/blobio/blob.go @@ -128,12 +128,12 @@ func getAuxBlob(ctx sqlite3.Context, arg []sqlite3.Value, write bool) (*sqlite3. return ctx.Conn().OpenBlob(db, table, column, row, write) } -func setAuxBlob(ctx sqlite3.Context, blob *sqlite3.Blob, writer bool) { +func setAuxBlob(ctx sqlite3.Context, blob *sqlite3.Blob, open bool) { // This ensures the blob is closed if db, table, column or write change. ctx.SetAuxData(0, blob) // db ctx.SetAuxData(1, blob) // table ctx.SetAuxData(2, blob) // column - if writer { + if open { ctx.SetAuxData(4, blob) // write } } diff --git a/go.work.sum b/go.work.sum index dd1c933..d3b1c91 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,3 +1,4 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= diff --git a/sqlite3/vtab.c b/sqlite3/vtab.c index 41cbba4..a30fb1b 100644 --- a/sqlite3/vtab.c +++ b/sqlite3/vtab.c @@ -218,6 +218,7 @@ int sqlite3_vtab_config_go(sqlite3 *db, int op, int constraint) { return sqlite3_vtab_config(db, op, constraint); } +static_assert(offsetof(struct sqlite3_vtab, zErrMsg) == 8, "Unexpected offset"); static_assert(offsetof(struct go_module, base) == 4, "Unexpected offset"); static_assert(offsetof(struct go_vtab, base) == 4, "Unexpected offset"); static_assert(offsetof(struct go_cursor, base) == 4, "Unexpected offset"); diff --git a/vtab.go b/vtab.go index 1f46b3f..4fb6322 100644 --- a/vtab.go +++ b/vtab.go @@ -628,13 +628,14 @@ const ( ) func vtabError(ctx context.Context, mod api.Module, ptr, kind uint32, err error) uint32 { + const zErrMsgOffset = 8 msg, code := errorCode(err, ERROR) if msg != "" && ptr != 0 { switch kind { case _VTAB_ERROR: - ptr = ptr + 8 // zErrMsg + ptr = ptr + zErrMsgOffset // zErrMsg case _CURSOR_ERROR: - ptr = util.ReadUint32(mod, ptr) + 8 // pVTab->zErrMsg + ptr = util.ReadUint32(mod, ptr) + zErrMsgOffset // pVTab->zErrMsg } db := ctx.Value(connKey{}).(*Conn) if ptr := util.ReadUint32(mod, ptr); ptr != 0 {