From d07f9eec20c8709b648a494586d4b03f75cfef47 Mon Sep 17 00:00:00 2001 From: Enrico Forestieri Date: Thu, 12 Apr 2012 16:25:38 +0200 Subject: [PATCH] Fix bug #8105: Crash when deleting math macro from the inside It seems that parameterless macros are not wrapped into a MathAtom. Rather than touching the macro code (which is tantamount to opening a can of worms, IMHO), I prefer this solution. --- src/CursorSlice.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/CursorSlice.cpp b/src/CursorSlice.cpp index c4b1c72f80..b4352e3ba4 100644 --- a/src/CursorSlice.cpp +++ b/src/CursorSlice.cpp @@ -23,7 +23,7 @@ #include "insets/Inset.h" #include "mathed/InsetMath.h" -#include "mathed/MathData.h" +#include "mathed/MathMacro.h" #include "support/lassert.h" @@ -61,8 +61,10 @@ Paragraph & CursorSlice::paragraph() const pos_type CursorSlice::lastpos() const { LASSERT(inset_, /**/); - return inset_->asInsetMath() ? cell().size() - : (text()->empty() ? 0 : paragraph().size()); + InsetMath const * math = inset_->asInsetMath(); + bool paramless_macro = math && math->asMacro() && !math->asMacro()->nargs(); + return math ? (paramless_macro ? 0 : cell().size()) + : (text()->empty() ? 0 : paragraph().size()); }