diff options
author | drh <> | 2023-10-07 08:00:54 +0000 |
---|---|---|
committer | drh <> | 2023-10-07 08:00:54 +0000 |
commit | 43e232dc473ce88c6d707fea72e937cba21c1ff2 (patch) | |
tree | 65363751693e64cfa874056505f4942c3e3162a1 /src | |
parent | 00eee7a786bf165e10de253fe3da19d1057f4aad (diff) | |
download | sqlite-43e232dc473ce88c6d707fea72e937cba21c1ff2.tar.gz sqlite-43e232dc473ce88c6d707fea72e937cba21c1ff2.zip |
Fix a resource leak: sqlite3_blob_reopen() was failing to invoke the
xDel() distructor on a register when it sets that register to the new
rowid. This was never a problem prior to the large-column cache of
[771fe35074b50b8d] as that destructor was always a no-op.
dbsqlfuzz cd96368deaece480fb94d42427dde053737a650e.
FossilOrigin-Name: 545edd5ecf20a7feb99dc5ce6f338fa1f172c2e17b240cbede497f0729dbd3d7
Diffstat (limited to 'src')
-rw-r--r-- | src/vdbeblob.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/vdbeblob.c b/src/vdbeblob.c index 32987da13..ea6f016e3 100644 --- a/src/vdbeblob.c +++ b/src/vdbeblob.c @@ -59,8 +59,7 @@ static int blobSeekToRow(Incrblob *p, sqlite3_int64 iRow, char **pzErr){ /* Set the value of register r[1] in the SQL statement to integer iRow. ** This is done directly as a performance optimization */ - v->aMem[1].flags = MEM_Int; - v->aMem[1].u.i = iRow; + sqlite3VdbeMemSetInt64(&v->aMem[1], iRow); /* If the statement has been run before (and is paused at the OP_ResultRow) ** then back it up to the point where it does the OP_NotExists. This could |