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 d07f9eec20)
This commit is contained in:
Enrico Forestieri 2012-04-12 16:25:38 +02:00
parent 3536bb52db
commit fe47997587
2 changed files with 8 additions and 3 deletions

View File

@ -23,7 +23,7 @@
#include "insets/Inset.h" #include "insets/Inset.h"
#include "mathed/InsetMath.h" #include "mathed/InsetMath.h"
#include "mathed/MathData.h" #include "mathed/MathMacro.h"
#include "support/lassert.h" #include "support/lassert.h"
@ -61,7 +61,9 @@ Paragraph & CursorSlice::paragraph() const
pos_type CursorSlice::lastpos() const pos_type CursorSlice::lastpos() const
{ {
LASSERT(inset_, /**/); LASSERT(inset_, /**/);
return inset_->asInsetMath() ? cell().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()); : (text()->empty() ? 0 : paragraph().size());
} }

View File

@ -89,6 +89,9 @@ What's new
flag by using the same latex backend used for previewing the document flag by using the same latex backend used for previewing the document
instead of always using the plain latex backend. 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 * USER INTERFACE