commit d4f04513c23396b46dd0ab1ffdabdedbffe947ca
Author: Juergen Spitzmueller <[email protected]>
Date: Mon Feb 10 09:23:17 2014 +0100
Fix LFUN_MATH_AMS_MATRIX: it was possible to generate corrupt documents
(part of #8359)
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index a214cfe..d100905 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -1732,10 +1732,12 @@ void LyXAction::init()
{ LFUN_MATH_MATRIX, "math-matrix", Noop, Math },
/*!
* \var lyx::FuncCode lyx::LFUN_MATH_AMS_MATRIX
- * \li Action: Inserts a matrix.
+ * \li Action: Inserts an extended matrix as provided by the amsmath package.
* \li Syntax: math-matrix <COLS> <ROWS> [<DECORATION>]
* \li Params: <DECORATION>: Decoration determines the LaTeX name of the matrix
- that should be created.
+ that should be created. Possible values include
+ pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix and
+ matrix. The default is 'matrix'.
* \li Sample: math-ams-matrix 3 3 bmatrix
* \endvar
*/
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index b9a2ed4..3d31b9a 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -1079,13 +1079,19 @@ void InsetMathNest::doDispatch(Cursor & cur,
FuncRequest & cmd)
cur.recordUndo();
unsigned int m = 1;
unsigned int n = 1;
- docstring name;
+ docstring name = from_ascii("matrix");
idocstringstream is(cmd.argument());
is >> m >> n >> name;
if (m < 1)
m = 1;
if (n < 1)
n = 1;
+ // check if we have a valid decoration
+ if (name != "pmatrix" && name != "bmatrix"
+ && name != "Bmatrix" && name != "vmatrix"
+ && name != "Vmatrix" && name != "matrix")
+ name = from_ascii("matrix");
+
cur.niceInsert(
MathAtom(new InsetMathAMSArray(buffer_, name, m, n)));
break;