mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
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
This commit is contained in:
@ -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 ){
|
||||
|
Reference in New Issue
Block a user