summaryrefslogtreecommitdiff
path: root/vendor/modernc.org/sqlite/sqlite.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/modernc.org/sqlite/sqlite.go')
-rw-r--r--vendor/modernc.org/sqlite/sqlite.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/vendor/modernc.org/sqlite/sqlite.go b/vendor/modernc.org/sqlite/sqlite.go
index 728e1870e..39675a68b 100644
--- a/vendor/modernc.org/sqlite/sqlite.go
+++ b/vendor/modernc.org/sqlite/sqlite.go
@@ -603,6 +603,10 @@ func (s *stmt) query(ctx context.Context, args []driver.NamedValue) (r driver.Ro
var allocs []uintptr
defer func() {
+ if r == nil && err == nil {
+ r, err = newRows(s.c, pstmt, allocs, true)
+ }
+
if pstmt != 0 {
// ensure stmt finalized.
e := s.c.finalize(pstmt)
@@ -613,10 +617,6 @@ func (s *stmt) query(ctx context.Context, args []driver.NamedValue) (r driver.Ro
err = e
}
}
-
- if r == nil && err == nil {
- r, err = newRows(s.c, pstmt, allocs, true)
- }
}()
for psql := s.psql; *(*byte)(unsafe.Pointer(psql)) != 0; {
@@ -2154,7 +2154,9 @@ func functionArgs(tls *libc.TLS, argc int32, argv uintptr) []driver.Value {
size := sqlite3.Xsqlite3_value_bytes(tls, valPtr)
blobPtr := sqlite3.Xsqlite3_value_blob(tls, valPtr)
v := make([]byte, size)
- copy(v, (*libc.RawMem)(unsafe.Pointer(blobPtr))[:size:size])
+ if size != 0 {
+ copy(v, (*libc.RawMem)(unsafe.Pointer(blobPtr))[:size:size])
+ }
args[i] = v
default:
panic(fmt.Sprintf("unexpected argument type %q passed by sqlite", valType))