diff options
author | dan <dan@noemail.net> | 2018-04-06 16:22:25 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-04-06 16:22:25 +0000 |
commit | 3e259bcd961f686eac6ac67005834efba566c709 (patch) | |
tree | 1cc8f16367c8273a173be894b59b4d3ca33d3b10 /ext/session/sqlite3session.c | |
parent | 9a3c375fce81dd2add38c066fa2dc915ffecdc53 (diff) | |
download | sqlite-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.c | 4 |
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 ){ |