Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | The BLOB returned by sqlite3VdbeMemFromBtree() does not need to be zero-terminated. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
e0af9a9040768adf8bba42a8780adeb6 |
User & Date: | drh 2017-09-20 18:07:50.056 |
References
2017-09-22
| ||
12:52 | Partial backout of check-in [e0af9a904076]. It turns out we do need some extra space at the end of the record blob as an overrun area to use when decoding a maliciously malformed record. (check-in: 403b88a894 user: drh tags: trunk) | |
Context
2017-09-22
| ||
12:52 | Partial backout of check-in [e0af9a904076]. It turns out we do need some extra space at the end of the record blob as an overrun area to use when decoding a maliciously malformed record. (check-in: 403b88a894 user: drh tags: trunk) | |
2017-09-20
| ||
18:47 | Size and performance optimization on sqlite3VdbeMemGrow(). (check-in: 4b3f7eacb8 user: drh tags: trunk) | |
18:07 | The BLOB returned by sqlite3VdbeMemFromBtree() does not need to be zero-terminated. (check-in: e0af9a9040 user: drh tags: trunk) | |
17:49 | Small size and performance optimization in the bytecode engine. (check-in: 3b3e32d4cd user: drh tags: trunk) | |
Changes
Changes to src/vdbemem.c.
︙ | ︙ | |||
1008 1009 1010 1011 1012 1013 1014 | BtCursor *pCur, /* Cursor pointing at record to retrieve. */ u32 offset, /* Offset from the start of data to return bytes from. */ u32 amt, /* Number of bytes to return. */ Mem *pMem /* OUT: Return data in this Mem structure. */ ){ int rc; pMem->flags = MEM_Null; | | < < | | 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 | BtCursor *pCur, /* Cursor pointing at record to retrieve. */ u32 offset, /* Offset from the start of data to return bytes from. */ u32 amt, /* Number of bytes to return. */ Mem *pMem /* OUT: Return data in this Mem structure. */ ){ int rc; pMem->flags = MEM_Null; if( SQLITE_OK==(rc = sqlite3VdbeMemClearAndResize(pMem, amt)) ){ rc = sqlite3BtreePayload(pCur, offset, amt, pMem->z); if( rc==SQLITE_OK ){ pMem->flags = MEM_Blob; pMem->n = (int)amt; }else{ sqlite3VdbeMemRelease(pMem); } } return rc; } |
︙ | ︙ |