From: Richard Heck Date: Fri, 6 Jun 2008 03:11:56 +0000 (+0000) Subject: Prevent a crash when destroying insets whose Buffers have been closed. X-Git-Tag: 1.6.10~4490 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=95a5be2891459ae3d92412e7bab9998599283de4;p=features.git Prevent a crash when destroying insets whose Buffers have been closed. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25150 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp index d83fc6629d..ce754bd1fc 100644 --- a/src/insets/Inset.cpp +++ b/src/insets/Inset.cpp @@ -18,6 +18,7 @@ #include "buffer_funcs.h" #include "Buffer.h" +#include "BufferList.h" #include "BufferParams.h" #include "BufferView.h" #include "CoordCache.h" @@ -148,6 +149,12 @@ Buffer const & Inset::buffer() const } +bool Inset::isBufferValid() const +{ + return theBufferList().isLoaded(buffer_); +} + + docstring Inset::name() const { return from_ascii("unknown"); diff --git a/src/insets/Inset.h b/src/insets/Inset.h index 620fc428e0..172add48a9 100644 --- a/src/insets/Inset.h +++ b/src/insets/Inset.h @@ -103,6 +103,9 @@ public: /// retrieve associated Buffer virtual Buffer & buffer(); virtual Buffer const & buffer() const; + /// This checks whether the Buffer * actually points to an open + /// Buffer. It might not if that Buffer has been closed. + bool isBufferValid() const; /// initialize view for this inset. /** diff --git a/src/insets/InsetBibitem.cpp b/src/insets/InsetBibitem.cpp index 69599c27bb..f796e3c6c1 100644 --- a/src/insets/InsetBibitem.cpp +++ b/src/insets/InsetBibitem.cpp @@ -57,7 +57,7 @@ InsetBibitem::InsetBibitem(Buffer const & buf, InsetCommandParams const & p) InsetBibitem::~InsetBibitem() { - if (buffer_) + if (isBufferValid()) buffer_->invalidateBibinfoCache(); } diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp index 95dc99c53c..9b0e77e7b6 100644 --- a/src/insets/InsetBibtex.cpp +++ b/src/insets/InsetBibtex.cpp @@ -59,7 +59,7 @@ InsetBibtex::InsetBibtex(Buffer const & buf, InsetCommandParams const & p) InsetBibtex::~InsetBibtex() { - if (buffer_) + if (isBufferValid()) buffer_->invalidateBibinfoCache(); }