From fe47997587e756a881702d22daccb63283d93fb8 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. (cherry picked from commit d07f9eec20c8709b648a494586d4b03f75cfef47) --- src/CursorSlice.cpp | 8 +++++--- status.20x | 3 +++ 2 files changed, 8 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()); } diff --git a/status.20x b/status.20x index 70f49ff190..b7bd859347 100644 --- a/status.20x +++ b/status.20x @@ -89,6 +89,9 @@ What's new flag by using the same latex backend used for previewing the document instead of always using the plain latex backend. +- Fix crash when dissolving a math macro whose first argument is another + parameterless macro (bug 8105). + * USER INTERFACE -- 2.39.5