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