bug 119631 nsSlidingString using a delete callback function r=dbaron@fas.harvard.edu, sr=jaggernaut, a=asa
git-svn-id: svn://10.0.0.236/trunk@115656 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -41,8 +41,14 @@ nsSlidingSharedBufferList::DiscardUnreferencedPrefix( Buffer* aRecentlyReleasedB
|
||||
{
|
||||
if ( aRecentlyReleasedBuffer == mFirstBuffer )
|
||||
{
|
||||
while ( mFirstBuffer && !mFirstBuffer->IsReferenced() )
|
||||
delete UnlinkBuffer(mFirstBuffer);
|
||||
while ( mFirstBuffer && !mFirstBuffer->IsReferenced() ) {
|
||||
Buffer *buffer = UnlinkBuffer(mFirstBuffer);
|
||||
if (mFreeProc && !buffer->IsSingleAllocationWithBuffer()) {
|
||||
(*mFreeProc)(buffer->DataStart(), mClientData);
|
||||
buffer->DataStart(nsnull);
|
||||
}
|
||||
delete buffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,6 +285,13 @@ nsSlidingString::nsSlidingString( PRUnichar* aStorageStart, PRUnichar* aDataEnd,
|
||||
// nothing else to do here
|
||||
}
|
||||
|
||||
nsSlidingString::nsSlidingString( PRUnichar* aStorageStart, PRUnichar* aDataEnd, PRUnichar* aStorageEnd,
|
||||
nsFreeProc *aFreeProc, void *aClientData )
|
||||
: nsSlidingSubstring(new nsSlidingSharedBufferList(nsSlidingSharedBufferList::NewWrappingBuffer(aStorageStart, aDataEnd, aStorageEnd), aFreeProc, aClientData))
|
||||
{
|
||||
// nothing else to do here
|
||||
}
|
||||
|
||||
void
|
||||
nsSlidingString::AppendBuffer( PRUnichar* aStorageStart, PRUnichar* aDataEnd, PRUnichar* aStorageEnd )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user