From 1ebdc1aa930d35ff61d017a8d71b2cd9c9fc7dc5 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Mon, 6 Mar 2023 17:51:25 +0000 Subject: [PATCH] Towards shared modules: refactor. --- conn.go | 38 -------------------------------------- compile.go => module.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 38 deletions(-) rename compile.go => module.go (71%) diff --git a/conn.go b/conn.go index e41c7ee..dd5e8f2 100644 --- a/conn.go +++ b/conn.go @@ -4,7 +4,6 @@ import ( "context" "database/sql/driver" "fmt" - "math" "net/url" "runtime" "strings" @@ -334,43 +333,6 @@ func (c *Conn) error(rc uint64, sql ...string) error { return c.mod.error(rc, c.handle, sql...) } -func (c *module) error(rc uint64, handle uint32, sql ...string) error { - if rc == _OK { - return nil - } - - err := Error{code: rc} - - if err.Code() == NOMEM || err.ExtendedCode() == IOERR_NOMEM { - panic(oomErr) - } - - var r []uint64 - - r, _ = c.api.errstr.Call(c.ctx, rc) - if r != nil { - err.str = c.mem.readString(uint32(r[0]), _MAX_STRING) - } - - r, _ = c.api.errmsg.Call(c.ctx, uint64(handle)) - if r != nil { - err.msg = c.mem.readString(uint32(r[0]), _MAX_STRING) - } - - if sql != nil { - r, _ = c.api.erroff.Call(c.ctx, uint64(handle)) - if r != nil && r[0] != math.MaxUint32 { - err.sql = sql[0][r[0]:] - } - } - - switch err.msg { - case err.str, "not an error": - err.msg = "" - } - return &err -} - func (c *Conn) call(fn api.Function, params ...uint64) []uint64 { r, err := fn.Call(c.ctx, params...) if err != nil { diff --git a/compile.go b/module.go similarity index 71% rename from compile.go rename to module.go index 1efb23f..f2713b3 100644 --- a/compile.go +++ b/module.go @@ -3,6 +3,7 @@ package sqlite3 import ( "context" "crypto/rand" + "math" "os" "runtime" "strconv" @@ -93,3 +94,40 @@ type module struct { mem memory api sqliteAPI } + +func (c *module) error(rc uint64, handle uint32, sql ...string) error { + if rc == _OK { + return nil + } + + err := Error{code: rc} + + if err.Code() == NOMEM || err.ExtendedCode() == IOERR_NOMEM { + panic(oomErr) + } + + var r []uint64 + + r, _ = c.api.errstr.Call(c.ctx, rc) + if r != nil { + err.str = c.mem.readString(uint32(r[0]), _MAX_STRING) + } + + r, _ = c.api.errmsg.Call(c.ctx, uint64(handle)) + if r != nil { + err.msg = c.mem.readString(uint32(r[0]), _MAX_STRING) + } + + if sql != nil { + r, _ = c.api.erroff.Call(c.ctx, uint64(handle)) + if r != nil && r[0] != math.MaxUint32 { + err.sql = sql[0][r[0]:] + } + } + + switch err.msg { + case err.str, "not an error": + err.msg = "" + } + return &err +}