[LyX/master] Do not allow pasting backslashes in macro names
Enrico Forestieri
forenr at lyx.org
Sun Nov 20 17:11:17 UTC 2022
commit a11780b59fcb6cdd16b15f9fa4de45d7ddfd1b2a
Author: Enrico Forestieri <forenr at 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();
More information about the lyx-cvs
mailing list