aboutsummaryrefslogtreecommitdiff
path: root/ext/session/sqlite3session.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-04-06 16:22:25 +0000
committerdan <dan@noemail.net>2018-04-06 16:22:25 +0000
commit3e259bcd961f686eac6ac67005834efba566c709 (patch)
tree1cc8f16367c8273a173be894b59b4d3ca33d3b10 /ext/session/sqlite3session.c
parent9a3c375fce81dd2add38c066fa2dc915ffecdc53 (diff)
downloadsqlite-3e259bcd961f686eac6ac67005834efba566c709.tar.gz
sqlite-3e259bcd961f686eac6ac67005834efba566c709.zip
Fix a problem in the sessions module causing sqlite3session_apply_strm() to
allocate enough memory for the entire input buffer - which defeats the point of a streaming interface. FossilOrigin-Name: 7594e60935b0b5dcf764476dccdf9b403303818a0419a30bc2c16d58e44f6d04
Diffstat (limited to 'ext/session/sqlite3session.c')
-rw-r--r--ext/session/sqlite3session.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c
index 7a9de6fd2..a59d38c80 100644
--- a/ext/session/sqlite3session.c
+++ b/ext/session/sqlite3session.c
@@ -68,7 +68,7 @@ struct SessionBuffer {
** sqlite3changeset_start_strm()).
*/
struct SessionInput {
- int bNoDiscard; /* If true, discard no data */
+ int bNoDiscard; /* If true, do not discard in InputBuffer() */
int iCurrent; /* Offset in aData[] of current change */
int iNext; /* Offset in aData[] of next change */
u8 *aData; /* Pointer to buffer containing changeset */
@@ -2593,7 +2593,7 @@ int sqlite3changeset_start_strm(
** object and the buffer is full, discard some data to free up space.
*/
static void sessionDiscardData(SessionInput *pIn){
- if( pIn->bEof && pIn->xInput && pIn->iNext>=SESSIONS_STRM_CHUNK_SIZE ){
+ if( pIn->xInput && pIn->iNext>=SESSIONS_STRM_CHUNK_SIZE ){
int nMove = pIn->buf.nBuf - pIn->iNext;
assert( nMove>=0 );
if( nMove>0 ){