call sqlite3_column_blob() before sqlite3_column_bytes()

sqlite3 documentation states sqlite3_column_blob could modify the
the content and recommends the "safest and easiest" policy is to
invoke sqlite3_column_blob() followed by sqlite3_column_bytes()

from: http://www.sqlite.org/c3ref/column_blob.html
This commit is contained in:
David Hill 2013-08-02 00:41:09 -04:00
parent dc751dd5f6
commit ecc4ab4956
1 changed files with 1 additions and 1 deletions

View File

@ -373,8 +373,8 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
case C.SQLITE_FLOAT: case C.SQLITE_FLOAT:
dest[i] = float64(C.sqlite3_column_double(rc.s.s, C.int(i))) dest[i] = float64(C.sqlite3_column_double(rc.s.s, C.int(i)))
case C.SQLITE_BLOB: case C.SQLITE_BLOB:
n := int(C.sqlite3_column_bytes(rc.s.s, C.int(i)))
p := C.sqlite3_column_blob(rc.s.s, C.int(i)) p := C.sqlite3_column_blob(rc.s.s, C.int(i))
n := int(C.sqlite3_column_bytes(rc.s.s, C.int(i)))
switch dest[i].(type) { switch dest[i].(type) {
case sql.RawBytes: case sql.RawBytes:
dest[i] = (*[1 << 30]byte)(unsafe.Pointer(p))[0:n] dest[i] = (*[1 << 30]byte)(unsafe.Pointer(p))[0:n]