diff options
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go index 4584324c1..e4e338549 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go @@ -35,17 +35,22 @@ func DelHandle(ctx context.Context, id uint32) error { s := ctx.Value(moduleKey{}).(*moduleState) a := s.handles[^id] s.handles[^id] = nil - s.holes++ + if l := uint32(len(s.handles)); l == ^id { + s.handles = s.handles[:l-1] + } else { + s.holes++ + } if c, ok := a.(io.Closer); ok { return c.Close() } return nil } -func AddHandle(ctx context.Context, a any) (id uint32) { +func AddHandle(ctx context.Context, a any) uint32 { if a == nil { panic(NilErr) } + s := ctx.Value(moduleKey{}).(*moduleState) // Find an empty slot. |