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.
This commit is contained in:
Enrico Forestieri 2012-04-12 16:25:38 +02:00
parent 53f8c46e8a
commit d07f9eec20

View File

@ -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());
}