@@ -20,8 +20,8 @@ type Blob struct {
20
20
c * Conn
21
21
bytes int64
22
22
offset int64
23
- handle uint32
24
- bufptr uint32
23
+ handle ptr_t
24
+ bufptr ptr_t
25
25
buflen int64
26
26
}
27
27
@@ -37,23 +37,23 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob,
37
37
tablePtr := c .arena .string (table )
38
38
columnPtr := c .arena .string (column )
39
39
40
- var flags uint64
40
+ var flags int32
41
41
if write {
42
42
flags = 1
43
43
}
44
44
45
45
c .checkInterrupt (c .handle )
46
- r := c .call ("sqlite3_blob_open" , uint64 (c .handle ),
47
- uint64 (dbPtr ), uint64 (tablePtr ), uint64 (columnPtr ),
48
- uint64 (row ), flags , uint64 (blobPtr ))
46
+ rc := res_t ( c .call ("sqlite3_blob_open" , stk_t (c .handle ),
47
+ stk_t (dbPtr ), stk_t (tablePtr ), stk_t (columnPtr ),
48
+ stk_t (row ), stk_t ( flags ), stk_t (blobPtr ) ))
49
49
50
- if err := c .error (r ); err != nil {
50
+ if err := c .error (rc ); err != nil {
51
51
return nil , err
52
52
}
53
53
54
54
blob := Blob {c : c }
55
- blob .handle = util .ReadUint32 (c .mod , blobPtr )
56
- blob .bytes = int64 (c .call ("sqlite3_blob_bytes" , uint64 (blob .handle )))
55
+ blob .handle = util .Read32 [ ptr_t ] (c .mod , blobPtr )
56
+ blob .bytes = int64 (int32 ( c .call ("sqlite3_blob_bytes" , stk_t (blob .handle ) )))
57
57
return & blob , nil
58
58
}
59
59
@@ -67,10 +67,10 @@ func (b *Blob) Close() error {
67
67
return nil
68
68
}
69
69
70
- r := b .c .call ("sqlite3_blob_close" , uint64 (b .handle ))
70
+ rc := res_t ( b .c .call ("sqlite3_blob_close" , stk_t (b .handle ) ))
71
71
b .c .free (b .bufptr )
72
72
b .handle = 0
73
- return b .c .error (r )
73
+ return b .c .error (rc )
74
74
}
75
75
76
76
// Size returns the size of the BLOB in bytes.
@@ -94,13 +94,13 @@ func (b *Blob) Read(p []byte) (n int, err error) {
94
94
want = avail
95
95
}
96
96
if want > b .buflen {
97
- b .bufptr = b .c .realloc (b .bufptr , uint64 ( want ) )
97
+ b .bufptr = b .c .realloc (b .bufptr , want )
98
98
b .buflen = want
99
99
}
100
100
101
- r := b .c .call ("sqlite3_blob_read" , uint64 (b .handle ),
102
- uint64 (b .bufptr ), uint64 (want ), uint64 (b .offset ))
103
- err = b .c .error (r )
101
+ rc := res_t ( b .c .call ("sqlite3_blob_read" , stk_t (b .handle ),
102
+ stk_t (b .bufptr ), stk_t (want ), stk_t (b .offset ) ))
103
+ err = b .c .error (rc )
104
104
if err != nil {
105
105
return 0 , err
106
106
}
@@ -109,7 +109,7 @@ func (b *Blob) Read(p []byte) (n int, err error) {
109
109
err = io .EOF
110
110
}
111
111
112
- copy (p , util .View (b .c .mod , b .bufptr , uint64 ( want ) ))
112
+ copy (p , util .View (b .c .mod , b .bufptr , want ))
113
113
return int (want ), err
114
114
}
115
115
@@ -127,19 +127,19 @@ func (b *Blob) WriteTo(w io.Writer) (n int64, err error) {
127
127
want = avail
128
128
}
129
129
if want > b .buflen {
130
- b .bufptr = b .c .realloc (b .bufptr , uint64 ( want ) )
130
+ b .bufptr = b .c .realloc (b .bufptr , want )
131
131
b .buflen = want
132
132
}
133
133
134
134
for want > 0 {
135
- r := b .c .call ("sqlite3_blob_read" , uint64 (b .handle ),
136
- uint64 (b .bufptr ), uint64 (want ), uint64 (b .offset ))
137
- err = b .c .error (r )
135
+ rc := res_t ( b .c .call ("sqlite3_blob_read" , stk_t (b .handle ),
136
+ stk_t (b .bufptr ), stk_t (want ), stk_t (b .offset ) ))
137
+ err = b .c .error (rc )
138
138
if err != nil {
139
139
return n , err
140
140
}
141
141
142
- mem := util .View (b .c .mod , b .bufptr , uint64 ( want ) )
142
+ mem := util .View (b .c .mod , b .bufptr , want )
143
143
m , err := w .Write (mem [:want ])
144
144
b .offset += int64 (m )
145
145
n += int64 (m )
@@ -165,14 +165,14 @@ func (b *Blob) WriteTo(w io.Writer) (n int64, err error) {
165
165
func (b * Blob ) Write (p []byte ) (n int , err error ) {
166
166
want := int64 (len (p ))
167
167
if want > b .buflen {
168
- b .bufptr = b .c .realloc (b .bufptr , uint64 ( want ) )
168
+ b .bufptr = b .c .realloc (b .bufptr , want )
169
169
b .buflen = want
170
170
}
171
171
util .WriteBytes (b .c .mod , b .bufptr , p )
172
172
173
- r := b .c .call ("sqlite3_blob_write" , uint64 (b .handle ),
174
- uint64 (b .bufptr ), uint64 (want ), uint64 (b .offset ))
175
- err = b .c .error (r )
173
+ rc := res_t ( b .c .call ("sqlite3_blob_write" , stk_t (b .handle ),
174
+ stk_t (b .bufptr ), stk_t (want ), stk_t (b .offset ) ))
175
+ err = b .c .error (rc )
176
176
if err != nil {
177
177
return 0 , err
178
178
}
@@ -196,17 +196,17 @@ func (b *Blob) ReadFrom(r io.Reader) (n int64, err error) {
196
196
want = 1
197
197
}
198
198
if want > b .buflen {
199
- b .bufptr = b .c .realloc (b .bufptr , uint64 ( want ) )
199
+ b .bufptr = b .c .realloc (b .bufptr , want )
200
200
b .buflen = want
201
201
}
202
202
203
203
for {
204
- mem := util .View (b .c .mod , b .bufptr , uint64 ( want ) )
204
+ mem := util .View (b .c .mod , b .bufptr , want )
205
205
m , err := r .Read (mem [:want ])
206
206
if m > 0 {
207
- r := b .c .call ("sqlite3_blob_write" , uint64 (b .handle ),
208
- uint64 (b .bufptr ), uint64 (m ), uint64 (b .offset ))
209
- err := b .c .error (r )
207
+ rc := res_t ( b .c .call ("sqlite3_blob_write" , stk_t (b .handle ),
208
+ stk_t (b .bufptr ), stk_t (m ), stk_t (b .offset ) ))
209
+ err := b .c .error (rc )
210
210
if err != nil {
211
211
return n , err
212
212
}
@@ -254,8 +254,8 @@ func (b *Blob) Seek(offset int64, whence int) (int64, error) {
254
254
// https://sqlite.org/c3ref/blob_reopen.html
255
255
func (b * Blob ) Reopen (row int64 ) error {
256
256
b .c .checkInterrupt (b .c .handle )
257
- err := b .c .error (b .c .call ("sqlite3_blob_reopen" , uint64 (b .handle ), uint64 (row )))
258
- b .bytes = int64 (b .c .call ("sqlite3_blob_bytes" , uint64 (b .handle )))
257
+ err := b .c .error (res_t ( b .c .call ("sqlite3_blob_reopen" , stk_t (b .handle ), stk_t (row ) )))
258
+ b .bytes = int64 (int32 ( b .c .call ("sqlite3_blob_bytes" , stk_t (b .handle ) )))
259
259
b .offset = 0
260
260
return err
261
261
}
0 commit comments