mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
Fix a memory management problem in lsm log recovery code.
FossilOrigin-Name: dd55af30b4440bba1b97c2155b9f499d791cd7d8bae8341972c41439fdc41edc
This commit is contained in:
@ -868,12 +868,14 @@ static void logReaderBlob(
|
||||
}else{
|
||||
int nCopy = LSM_MIN(nAvail, nReq);
|
||||
if( nBlob==nReq ){
|
||||
if( ppBlob ) *ppBlob = (u8 *)pBuf->z;
|
||||
pBuf->n = 0;
|
||||
}
|
||||
rc = lsmStringBinAppend(pBuf, (u8 *)&p->buf.z[p->iBuf], nCopy);
|
||||
nReq -= nCopy;
|
||||
p->iBuf += nCopy;
|
||||
if( nReq==0 && ppBlob ){
|
||||
*ppBlob = (u8*)pBuf->z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -915,6 +917,7 @@ static void logReaderCksum(LogReader *p, LsmString *pBuf, int *pbEof, int *pRc){
|
||||
logCksumUnaligned(&p->buf.z[p->iCksumBuf], nCksum, &p->cksum0, &p->cksum1);
|
||||
p->iCksumBuf = p->iBuf + 8;
|
||||
logReaderBlob(p, pBuf, 8, &pPtr, pRc);
|
||||
assert( pPtr || *pRc );
|
||||
|
||||
/* Read the checksums from the log file. Set *pbEof if they do not match. */
|
||||
if( pPtr ){
|
||||
|
Reference in New Issue
Block a user