commit a11780b59fcb6cdd16b15f9fa4de45d7ddfd1b2a
Author: Enrico Forestieri <for...@lyx.org>
Date:   Sun Nov 20 19:01:38 2022 +0100

    Do not allow pasting backslashes in macro names
    
    Backslashes are not allowed in macro names and LyX
    enforces this by not allowing entering them by keyboard.
    However, it was possible to paste them and this may cause
    crashes (see bug #12596).
---
 src/mathed/InsetMathNest.cpp |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 54d96d9..70ef185 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -548,6 +548,15 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & 
cmd)
                        topaste = cap::selection(n, 
make_pair(buffer().params().documentClassPtr(),
                                                              
buffer().params().authors()));
                }
+               InsetMath const * im = cur.inset().asInsetMath();
+               InsetMathMacro const * macro = im ? im->asMacro() : nullptr;
+               // do not allow pasting a backslash in the name of a macro
+               if (macro
+                   && macro->displayMode() == InsetMathMacro::DISPLAY_UNFOLDED
+                   && support::contains(topaste, char_type('\\'))) {
+                       LYXERR0("Removing backslash from pasted string");
+                       topaste = subst(topaste, from_ascii("\\"), docstring());
+               }
                cur.niceInsert(topaste, parseflg, false);
                cur.clearSelection(); // bug 393
                cur.forceBufferUpdate();
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to