]> git.lyx.org Git - lyx.git/commitdiff
Fix bug #8105: Crash when deleting math macro from the inside
authorEnrico Forestieri <forenr@lyx.org>
Thu, 12 Apr 2012 14:25:38 +0000 (16:25 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Thu, 12 Apr 2012 14:28:29 +0000 (16:28 +0200)
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

index c4b1c72f80d803868a01b39e226e66cf1cba4841..b4352e3ba4b64976d54448fb9d62bfc33b8dd184 100644 (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());
 }