Skip to content

Commit 6ee3e67

Browse files
committed
close channel
1 parent 4702d9b commit 6ee3e67

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

sqlite3.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -875,14 +875,16 @@ func (c *SQLiteConn) exec(ctx context.Context, query string, args []driver.Named
875875
// consume the number of arguments used in the current
876876
// statement and append all named arguments not
877877
// contained therein
878-
stmtArgs = append(stmtArgs, args[start:start+na]...)
879-
for i := range args {
880-
if (i < start || i >= na) && args[i].Name != "" {
881-
stmtArgs = append(stmtArgs, args[i])
878+
if len(args[start:start+na]) > 0 {
879+
stmtArgs = append(stmtArgs, args[start:start+na]...)
880+
for i := range args {
881+
if (i < start || i >= na) && args[i].Name != "" {
882+
stmtArgs = append(stmtArgs, args[i])
883+
}
884+
}
885+
for i := range stmtArgs {
886+
stmtArgs[i].Ordinal = i + 1
882887
}
883-
}
884-
for i := range stmtArgs {
885-
stmtArgs[i].Ordinal = i + 1
886888
}
887889
res, err = s.(*SQLiteStmt).exec(ctx, stmtArgs)
888890
if err != nil && err != driver.ErrSkip {
@@ -1906,6 +1908,7 @@ func (s *SQLiteStmt) Close() error {
19061908
if rv != C.SQLITE_OK {
19071909
return s.c.lastError()
19081910
}
1911+
s.c = nil
19091912
runtime.SetFinalizer(s, nil)
19101913
return nil
19111914
}
@@ -2011,6 +2014,7 @@ func (s *SQLiteStmt) query(ctx context.Context, args []driver.NamedValue) (drive
20112014
closed: false,
20122015
ctx: ctx,
20132016
}
2017+
runtime.SetFinalizer(rows, (*SQLiteRows).Close)
20142018

20152019
return rows, nil
20162020
}
@@ -2056,6 +2060,7 @@ func (s *SQLiteStmt) exec(ctx context.Context, args []driver.NamedValue) (driver
20562060
err error
20572061
}
20582062
resultCh := make(chan result)
2063+
defer close(resultCh)
20592064
go func() {
20602065
r, err := s.execSync(args)
20612066
resultCh <- result{r, err}
@@ -2122,6 +2127,8 @@ func (rc *SQLiteRows) Close() error {
21222127
return rc.s.c.lastError()
21232128
}
21242129
rc.s.mu.Unlock()
2130+
rc.s = nil
2131+
runtime.SetFinalizer(rc, nil)
21252132
return nil
21262133
}
21272134

@@ -2168,6 +2175,7 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
21682175
return rc.nextSyncLocked(dest)
21692176
}
21702177
resultCh := make(chan error)
2178+
defer close(resultCh)
21712179
go func() {
21722180
resultCh <- rc.nextSyncLocked(dest)
21732181
}()

0 commit comments

Comments
 (0)