From 95a5be2891459ae3d92412e7bab9998599283de4 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Fri, 6 Jun 2008 03:11:56 +0000 Subject: [PATCH] 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 --- src/insets/Inset.cpp | 7 +++++++ src/insets/Inset.h | 3 +++ src/insets/InsetBibitem.cpp | 2 +- src/insets/InsetBibtex.cpp | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) 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(); } -- 2.39.2