branch: Fix bug #7263: Instant Preview crash.

I guess this deserves to be sorted out better, because we are doing tricky things by deleted the object from itself.

Problem:
 
PreviewImage? has a member PreviewLoader?. PreviewImage::Impl::statusChanged() calls PreviewLoader::remove. PreviewLoader::Impl::remove removes a snippet from the cache. In the cache is a map of the snippet and a shared pointer to PreviewImage?. This means that removing the snippet from the cache, destroys the PreviewImage?. When we get back to PreviewImage::Impl::statusChanged() this will start to crash.

see r37681.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_6_X@37683 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2011-02-15 18:04:16 +00:00
parent 016c39e734
commit fcb7828b4b

View File

@ -133,7 +133,10 @@ void PreviewImage::Impl::statusChanged()
case ErrorUnknown:
//iloader_.filename().removeFile();
ploader_.remove(snippet_);
break;
// FIXME: We need to return here, because PreviewLoader::remove
// removes the preview image from the cache, which deletes this
// object, so we should not try to do anything here.
return;
case Ready:
iloader_.filename().removeFile();